對closehandle()的疑惑終於弄明白了

首先看code(vs 2008下編譯通過):

運行結果:

疑惑以及解釋:(有什麼不妥的地方,還請大家多多指教)

由於我這裏設置等待的時間是0,所以在新建立的兩個線程還未執行前,主線程已經執行到了getchar();
也就是說已經執行了closehandle(),那後面的兩個線程怎麼又能執行並打印結果呢?開始一直對這個問題
不解,通過翻閱了王豔平的《Windows程序設計》,才明白原來closehandle()並沒有真正的銷燬句柄
具體解釋:
 每次createthread()創建線程對象的時候,線程對象中Usage count的初始化值爲2(注意不是1)
closehandle()能是Usage count的值減少1,這個時候Usage count的值爲1,所以並沒有銷燬,只有
當線程執行的函數通過return結束的時候,Usage count繼續減少1變爲0,這個時候才真正的銷燬對象

發佈了98 篇原創文章 · 獲贊 6 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章