每個執行緒都有乙個執行緒核心物件,核心物件裡包含各種資訊
該物件裡有乙個暫停計數,當暫停計數大於0的時候,執行緒暫停
dword suspendthread(
handle hthread //執行緒控制代碼
);//這個函式可以暫停執行緒,使得暫停計數加1
dword resumethread(
handle hthread // 執行緒控制代碼
);//這個函式使得執行緒的暫停計數減1,當執行緒的暫停計數為0時,執行緒變為可排程狀態
所以,這裡有個問題,如果執行緒暫停了3次,要想讓執行緒恢復執行,必須要恢復相應的次數
執行緒的暫停其實就是執行緒不可排程,那麼讓執行緒不可排程的方法還有那些呢
void sleep(
dword dwmilliseconds // 睡眠時間(毫秒)
);強制系統重新分配cpu時間
sleep(0)
switchtothread()
這兩者之間的差別是,sleep只能讓優先順序和它相等或者比它高的執行緒獲得cpu時間,而switchtothread可以讓低優先順序的執行緒獲得cpu時間
windows核心程式設計之核心物件
由於不是計算機科班出身,一直對於程序和執行緒沒有深入的了解,現開始看windows核心程式設計,將具體內容整理一下,以加深印象。1 核心物件,即作業系統維護的乙個資料結構,內部維護該物件的各種資料資訊,常見的核心物件有 用於建立程序的程序核心物件,用於建立執行緒的執行緒核心物件,建立檔案的檔案核心物...
windows核心程式設計之程序 1
我對程序的理解,由於程序是不活潑的,活潑的是程序裡面的執行緒。所以,程序相當於乙個容器,只有裡面有東西 執行緒 該容器才有存在的必要,如果裡面的東西用光了 執行緒全部終止執行 瓶子就被 程序的位址空間就被系統 或重新分配給新的程序 多工搶占式作業系統 每個程序都有執行緒,每個執行緒都有自己的cpu暫...
windows核心程式設計之程序 3
獲取系統版本的函式 getversion返回乙個dword型別的值,高子返回ms dos版本號,低字返回windows版本號 本來按照邏輯來說應該是低字的高位元組返回windows的主版本號,低位元組返回此版本號,但是編寫該 程式設計師犯了乙個小錯誤,主版本號和次版本號的位置弄反了,高位元組返回次版...