我读到互斥锁和二进制信号量仅在一方面不同,在互斥锁的情况下,锁定线程必须解锁,但在信号量中,锁定和解锁线程可以不同吗?
哪一种效率更高?
假设您知道信号量和互斥体之间的基本区别:
为了快速、简单的同步,请使用临界区。
要跨进程边界同步线程,请使用互斥体。
要同步对有限资源的访问,请使用信号量。
除了互斥体有一个所有者这一事实之外,这两个对象还可以针对不同的用途进行优化。互斥锁被设计为仅保留很短的时间;违反这一点可能会导致性能不佳和调度不公平。例如,一个正在运行的线程可能被允许获取一个互斥锁,即使另一个线程已经被阻塞,从而创建一个互斥锁。deadlock。信号量可以提供更多的公平性,或者可以使用多个条件变量来强制公平性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)