執行緒核心物件初步認識

2021-09-24 19:32:37 字數 2947 閱讀 4940

執行緒核心物件

#執行緒核心物件初步認識

執行緒核心物件就是乙個包含了執行緒狀態資訊的資料結構。每一次對createthread函式的成功呼叫,系統就會在內部為新的執行緒分配乙個核心物件。系統提供的管理執行緒的函式其實就是依靠訪問執行緒核心物件來實現管理的。

執行緒核心物件的基本成員:

3.1.1核心物件的使用計數

核心物件由核心所擁有,而不是程序所擁有。換句話說,如果程序呼叫了建立核心物件的函式,之後程序終止執行,那麼核心物件並不一定被銷毀。在大多數情況下如果另外乙個程序在使用你建立的核心物件,那麼另外乙個程序終止前不會銷毀該核心物件。核心知道多少個程序正在使用某個核心物件,因為內個物件使用了計數器。當計數器減為0時,核心物件被銷毀。

**:(檔案佔坑(duplicatehandle).cpp)

3.2.2關閉核心物件

核心物件計數器減為0;

.**件

#pragma once

#include

#include

#include

using namespace std;

void sub_1();

bool seenablesedebugprivilege(handle processhandle, bool isenable);

handle seopenprocess(dword desiredaccess, bool isinherithandle, handle processidentify);

bool seclosehandle(handle handlevalue);

.cpp檔案

#include 「檔案佔坑(duplicatehandle).h」

bool __enabledebugprivilege = true;

//定義引數

void _tmain(int argc, tchar* ar**, tchar *envp)

void sub_1()

handle filehandle = invalid_handle_value;

//開啟***檔案(檔案物件)

filehandle = createfile(_t(「readme.txt」), generic_read, 0, null, create_always, file_attribute_normal, null);

if (filehandle == invalid_handle_value)

handle v1 = null;

//當前程序下的檔案控制代碼拷貝到目標程序下

//getcurrentprocess 當前程序 filehandle 檔案控制代碼 processhandle 目標程序控制代碼

//duplicate_same_access 拷貝到目標程序的檔案控制代碼具有相同的操作許可權

bool isok = duplicatehandle(getcurrentprocess(), filehandle, processhandle, &v1, 0,

false, duplicate_same_access);

if (filehandle!=invalid_handle_value)

exit:

if (processhandle != null)

}bool seenablesedebugprivilege(handle processhandle, bool isenable)

token_privileges tokenprivileges;

memset(&tokenprivileges, 0, sizeof(token_privileges));

luid v1;

if (!lookupprivilegevalue(null, se_debug_name, &v1))

tokenprivileges.privilegecount = 1;

tokenprivileges.privileges[0].luid = v1;

if (isenable)

tokenprivileges.privileges[0].attributes = se_privilege_enabled;

else

tokenprivileges.privileges[0].attributes = 0;

adjusttokenprivileges(tokenhandle, false, &tokenprivileges, sizeof(token_privileges), null, null);

lasterror = getlasterror();

closehandle(tokenhandle);

return lasterror;

}handle seopenprocess(dword desiredaccess, bool isinherithandle, handle processidentify)

//開啟程序

handle processhandle = openprocess(desiredaccess, isinherithandle, (dword)processidentify);

dword lasterror = getlasterror();

if (__enabledebugprivilege)

setlasterror(lasterror);

return processhandle;

}

bool seclosehandle(handle handlevalue)

執行結果:

執行緒池 初步認識 01

二 好處 三 實現原理 期望 每次任務提交的時候,都是當前執行的執行緒數大於等於核心執行緒數,此時不用獲取全域性鎖,即加入工作佇列。四 通過threadpoolexecutor建立執行緒池 1.corepoolsize 2.maximumpoolsize 3.keepalivetime 4.unit...

python 物件導向初步認識

什麼是物件導向?python是一門物件導向的語言 所謂的面相物件 oop 就是在程式設計的時候盡可能的去模擬真實的現實世界,按照現實世界中的邏輯去處理問題,分析問題中引數其中的有哪些實體,這些屍體應該有什麼屬性和方法,我們如何通過呼叫這些實體的屬性和方法去解決問題 類 可以理解為模版,本身不可用,通...

物件導向(一) 初步認識

什麼面向過程,什麼是物件導向,二者之間有什麼區別?答 這是兩種不同的開發 的模式.通俗理解 面向過程 老闆自己獨自作戰 所有的事情都需要自己去玩,親力親為 物件導向 老闆僱傭員工 老闆分配職責,發號施令 一 類和物件概念 1 類和物件類 將多個物件共同具有的特徵和行為抽象出來,定義乙個名字 示例 物...