閱讀637 返回首頁    go 阿裏雲 go 技術社區[雲棲]


線程同步之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

  上一篇:go 阿裏雲 OCS SDK for NodeJS介紹
  下一篇:go 機房收費係統之導出為Excel