根据我对互斥锁的了解,它们通常在共享资源上提供锁定功能。因此,如果一个新线程想要访问这个锁定的共享资源,它要么退出,要么必须不断轮询锁(并且在等待锁的过程中浪费处理器周期)。
然而,监视器有条件变量,它为等待线程提供了一种更异步的方式——通过将它们放在等待队列中,从而不让它们消耗处理器周期。
这是监视器相对于互斥锁(或任何没有条件变量的普通锁定机制)的唯一优势吗?
互斥锁是一种低级结构。它们只是提供互斥和内存可见性/排序。另一方面,监视器是更高级别的——它们允许线程等待应用程序特定的条件保持。
因此,在某些情况下,监控器比简单的锁/解锁要过分,但在大多数情况下,单独使用互斥互斥是远远不够的-所以您可以看到它们与一个或多个条件变量一起使用-在概念上使用监控器等效
我认为,监视器锁定对象(多线程不能同时访问对象)。当互斥锁锁一个进程时(只有一个线程可以通过该进程)