互斥体与监视器 - 比较

发布于 2024-12-08 07:10:29 字数 204 浏览 0 评论 0原文

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

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

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

From what I have learned about Mutexes - they generally provide a locking capability on a shared resources. So if a new thread wants to access this locked shared resource - it either quits or has to continually poll the lock (and wastes processor cycles in waiting for the lock).

However, a monitor has condition variables which provides a more asynchronous way for waiting threads - by putting them on wait queue and thereby not making them consume processor cycles.

Would this be the only advantage of monitors over mutexes (or any general locking mechanism without condition variables) ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

骄傲 2024-12-15 07:10:30

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

因此,在某些情况下,监视器对于简单的锁定/解锁来说太过分了,但在大多数情况下,仅使用互斥锁是不够的 - 因此您会看到它们与一个或多个条件变量一起使用 - 概念上使用等效的监视器。

Mutexes are low level construct. They just provide mutual exclusion and memory visibility/ordering. Monitors, on the other hand, are higher level - they allow threads to wait for an application specific condition to hold.

So, in some cases monitors are just overkill over a simple lock/unlock, but in most cases mutexes alone are not nearly enough - so you see them used with one or more condition variables - conceptually using monitors equivalent.

油饼 2024-12-15 07:10:30

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

I think, a monitor locks an object (Multi thread cannot access the object at the same time.)
While a mutex locks a process (multi-thread only one can go through the process.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文