windows核心對象semaphore合適增加和減少

來源:互聯網
上載者:User

轉自:http://www.ibm.com/developerworks/cn/java/l-threadPool/

在開發軟體的過程中,多線程的程式往往需要實現相互連訊,比如幾個線程添加一個訊息到隊列裡,而另一個線程在睡眠時,就需要喚醒那個線程來處理事情。在這其中,就需要使用到訊號量來進行同步。CreateSemaphore是建立訊號量,ReleaseSemaphore是增加訊號量。Semaphore是另一個同步問題機制,不論是Event或Mutex,其他Process在執WaitForSingleObject時,就看當時的物件是Signal或UnSignal而決定是否等待,而Semaphore也相同,但是它要變成Signal /UnSignal的狀態,卻有些不同,它是提供一個計數值,它允許在這個計數值之內,任何執行到WaitForSingleObject的Thread都不會停下來,而且每執行WaitForSingleObject一次,計數值就減一,當計數值變成0時,該Semaphore才會處於UnSignal的狀態,而某個Thread ReleaseSemaphore時,便會將計數值增加,以便其他的Thread或本身可得Signal的訊號,而使WaitForSingleObject停止等待。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.