例如,如果一次只有一个线程可以访问Critical Section
,为什么我们需要Events
同步2个线程来读/写呢?
答案 0 :(得分:1)
它们的使用方式有些重叠,但两者都有一些独特的功能:
WaitForSingleObject()
等兼容,而关键部分则不兼容。WaitForMultipleObjects[Ex]()
等待多个事件,但它只能等待一个关键部分(使用不同的API)。等等。
他们并非真正处于直接竞争中;最好将它们视为彼此互补。
互斥体位于中间位置。有关进一步的讨论,请参阅What is the difference between mutex and critical section?
答案 1 :(得分:0)
事件具有SetEvent功能,可以将其用作信号。例如,当一个线程完成读取文件或填充缓冲区时,它可以通过SetEvent在该数据的下一个处理步骤中启动另一个线程。