線程同步之Semaphore
線程同步之信號量
Semaphore
信號量。
它維護一個計數,當值大於0時,信號量對象處於已傳信狀態。通常用數值表示可用資源的個數。
WaitForSingleObject()令信號量減一;ReleaseSemaphore()令信號量加一。
分析:
信號量值為6,MAX_SEM_COUNT ,而用到信號量的線程有8,THREADCOUNT,不包括main函數線程。所以前6個創建好的線程WaitForSingleObject()返回值為WAIT_OBJECT_0,不會阻塞。而接下來的線程WaitForSingleObject()返回值為 WAIT_TIMEOUT,它們等其他P操作成功的線程 Sleep(5)後做V操作,才能獲得WAIT_OBJECT_0返回值。
8個ThreadProc線程執行完畢,主函數中WaitForMultipleObjects()函數才返回。
最後更新:2017-04-03 05:39:50