《win32多執行緒程式設計》讀後感(一)

2021-04-19 02:06:15 字數 1211 閱讀 8333

一本好書就是能給人以提示,讓人有種撥雲見日的感覺,這本書就是。

但凡一本關於多執行緒的書裡面肯定少不了關於作業系統的論述,是啊,兩者的關係太緊密了,在

windows

中,系統是以執行緒為單位來分配時間片的。當我們在

windows

下寫程式時,哪怕只是最簡單的

hello world

,你的程式也有個主線程,儘管你的

hello world

裡面並沒有顯式地寫執行緒的**,作業系統代勞了。

那麼執行緒究竟是什麼?

執行緒是cpu

所執行的乙個指令序列,它包括堆疊資訊,暫存器資訊,當該執行緒的時間片用完時就會發生

context switch,

執行權就交給了另外乙個執行緒。這些理論在任何一本作業系統裡都描述的很詳細了。

如何啟動乙個執行緒?

createthread(),

這是windows api

函式,用於建立乙個執行緒,它傳回兩個值,第乙個值是個控制代碼,這也是

createthread()

的返回值,大部分與執行緒有關的

api函式都需要它;第二個值是

lpthreadid

帶回來的執行緒

id,執行緒

id是個全域性變數,可以獨一無二的標示系統中任一程序中的執行緒。我們來細細的研究一下返回來的那個執行緒控制代碼:

執行緒控制代碼是乙個核心物件(

kernel object

),也就是它處於核心態,而非使用者態。這意味著我們不能以直接方式來決定它的生死存亡。事實上,和新物件保持了乙個引用計數

(refenrence count),

以記錄有多少

handles

對應到此物件。當我們呼叫

createthread()

或者其他傳回控制代碼的函式,引用計數就會累加

1。當我們呼叫

closehandle()

時,引用計數就會遞減

1,一旦引用計數降至

0時,這一核心物件便會被作業系統來摧毀。

何時結束乙個執行緒?

我一直堅持乙個原則,執行緒的工作完成後會自然消亡,反對一切暴力措施,如:

exitthread()

之類。也就是說我們只負責讓執行緒跑起來,它會在該結束的時候結束自己,不建議粗暴的殺掉乙個執行緒。

《Win32多執行緒程式設計》讀後感

吐槽一句,純粹把csdn的部落格當成筆記本了。這個月讀的書籍是 win32多執行緒程式設計 忘了在那兒看到推薦這本書的,結果去圖書館一查2002年出版的,在圖書館找到這本書時把我嚇著了,封面都掉了,可以想象它的歷史有多悠久。只隨便翻了幾頁就決定這個月就是它了,原因很簡單,它將與多執行緒相關的很多概念...

Win32多執行緒程式設計 一

1.程序 從win32的角度來看,程序就是一大堆物件的擁有權的集合,程序擁有的物件包括記憶體和資源兩類 程序擁有的記憶體 被程序擁有的記憶體可以分為以下三個型別 1 code code是程式的可執行部分,一定是唯讀性質 2 data data是程式中的所有變數 不包括函式中的區域性變數 可以分為全域...

win32多執行緒程式設計

使用3個執行緒完成6個任務,工作的執行是靠呼叫sleep 來模擬,時間長度是隨機給予的,只要乙個執行緒結束,就會有另乙個執行緒被產生。taskques.cpp 定義控制台應用程式的入口點。include stdafx.h include include include define win32 le...