Windows 监视器和其他同步原语之间有什么区别
监视器与其他同步原语(如互斥体、WinAPI事件和关键部分)之间的实际区别是什么?在我看来,这完全是一样的——一次一个线程可以锁定监视器,而其他线程应该等待它释放,就像在事件和关键部分的情况下一样Windows 监视器和其他同步原语之间有什么区别,windows,multithreading,winapi,mutex,critical-section,Windows,Multithreading,Winapi,Mutex,Critical Section,监视器与其他同步原语(如互斥体、WinAPI事件和关键部分)之间的实际区别是什么?在我看来,这完全是一样的——一次一个线程可以锁定监视器,而其他线程应该等待它释放,就像在事件和关键部分的情况下一样 那么,有什么区别呢?我错在哪里?Windows下的所有这些同步原语都有类似的操作(等待和信号),但这些操作的行为略有不同。所以原语的用法通常是不同的 临界段有所有者线程,因此只能由所有者释放(信号ed) 此外,与其他原语不同,关键部分的操作使用指针而不是句柄,因此WaitForMultipleObje
那么,有什么区别呢?我错在哪里?Windows下的所有这些同步原语都有类似的操作(
等待
和信号
),但这些操作的行为略有不同。所以原语的用法通常是不同的
信号
ed)WaitForMultipleObjects
和类似函数不能使用关键部分
WaitForMultipleObjects
)此外,信号量没有所有者语义,因此它们可以由任何线程发出信号。此功能对某些算法至关重要。你所说的“监视器”是什么意思?@Jonathan Potter它是瑞士军刀式同步原语。它简单地取代了互斥,但为(比如)难以用变体或信号量实现的有界生产者/消费者添加了优雅的解决方案。winapi不提供监视器,您必须使用条件变量或并发运行时。请阅读MSDN文档:。它解释了各种原语是什么以及如何使用它们。