实现中信号量和互斥锁的区别是什么?

4

我读到互斥锁和二进制信号量只有一个不同点,在互斥锁的情况下,锁定线程必须解锁,但在信号量的情况下,锁定和解锁线程可以是不同的?

哪个更有效率?


1个回答

4
假设您已经知道互斥量和信号量之间的基本区别:
为快速、简单的同步,使用临界区。
要在进程边界上同步线程,请使用互斥量。
要同步对有限资源的访问,请使用信号量。
除了互斥量具有所有者这一事实外,这两个对象可能被优化用于不同的用途。互斥锁旨在仅保持短时间;违反此规则可能会导致性能差和不公平调度。例如,一个运行线程可能会被允许获取互斥锁,即使另一个线程已经在其上被阻塞,从而创建死锁。信号量可能提供更多的公平性,或者可以使用几个条件变量来强制公平性。

“跨进程边界”是指在两个不同进程下创建的两个线程之间进行同步吗? - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接