簡體   English   中英

為什么我們需要事件來同步線程?

[英]Why do we need events to synchronize threads?

例如,如果一次僅一個線程可以訪問一個Critical Section ,為什么我們需要Events來同步2個線程以對其進行讀寫?

它們的使用方式有些重疊,但是兩者都有一些獨特的功能:

  1. 關鍵部分不能跨流程使用,而事件可以。
  2. 單個手動重置事件可用於一次釋放多個線程。 關鍵部分不能。
  3. 事件與WaitForSingleObject()等兼容,而關鍵部分則不兼容。
  4. 線程可以使用WaitForMultipleObjects[Ex]()等待多個事件,但是它只能等待單個關鍵部分(使用其他API)。

等等。

他們並不是真正的直接競爭者。 最好將它們視為彼此互補

互斥體位於中間。 有關進一步的討論,請參見互斥與關鍵部分有什么區別?

事件具有SetEvent函數,可將其用作信號。 例如,當一個線程完成讀取文件或填充緩沖區時,它可以使用SetEvent在下一個處理該數據的步驟上啟動另一個線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM