[英]Why do we need events to synchronize threads?
例如,如果一次僅一個線程可以訪問一個Critical Section
,為什么我們需要Events
來同步2個線程以對其進行讀寫?
它們的使用方式有些重疊,但是兩者都有一些獨特的功能:
WaitForSingleObject()
等兼容,而關鍵部分則不兼容。 WaitForMultipleObjects[Ex]()
等待多個事件,但是它只能等待單個關鍵部分(使用其他API)。 等等。
他們並不是真正的直接競爭者。 最好將它們視為彼此互補 。
互斥體位於中間。 有關進一步的討論,請參見互斥與關鍵部分有什么區別?
事件具有SetEvent函數,可將其用作信號。 例如,當一個線程完成讀取文件或填充緩沖區時,它可以使用SetEvent在下一個處理該數據的步驟上啟動另一個線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.