【问题标题】:Mutexes vs Monitors - A Comparison互斥锁与监视器 - 比较
【发布时间】:2011-12-01 22:37:47
【问题描述】:

根据我对互斥锁的了解 - 它们通常提供对共享资源的锁定功能。因此,如果一个新线程想要访问这个锁定的共享资源——它要么退出,要么必须不断地轮询锁(并浪费处理器周期等待锁)。

但是,监视器具有条件变量,它为等待线程提供了一种更加异步的方式 - 将它们放在等待队列中,从而不会使它们消耗处理器周期。

这是监视器相对于互斥锁(或任何没有条件变量的通用锁定机制)的唯一优势吗?

【问题讨论】:

  • 这准确吗?据我所知,当前所有的操作系​​统都将互斥操作放在等待队列中。他们没有投票。
  • @ZanLynx:如果没有,我看不到使用监视器而不是互斥锁的优势。

标签: multithreading mutex monitors


【解决方案1】:

互斥锁是低级构造。它们只是提供互斥和内存可见性/排序。另一方面,监视器是更高级别的——它们允许线程等待应用程序特定的条件保持。

因此,在某些情况下,监视器只是简单地锁定/解锁,但在大多数情况下,互斥锁单独还远远不够 - 所以你会看到它们与一个或多个条件变量一起使用 - 从概念上讲使用等效的监视器。

【讨论】:

    【解决方案2】:

    我认为,监视器锁定了一个对象(多线程不能同时访问该对象。) 而互斥锁锁定一个进程(多线程只有一个可以通过该进程。)

    【讨论】:

      猜你喜欢
      • 2010-11-12
      • 2016-11-04
      • 2010-09-16
      • 1970-01-01
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多