gpt4 book ai didi

multithreading - 信号量和互斥量在实现上有什么区别?

转载 作者:行者123 更新时间:2023-12-01 01:30:55 24 4
gpt4 key购买 nike

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

哪一种更有效率?

最佳答案

假设您知道信号量和互斥量之间的基本区别:

为了快速、简单的同步,请使用临界区。

要跨进程边界同步线程,请使用互斥锁。

要同步对有限资源的访问,请使用信号量。

除了互斥体有一个所有者这一事实之外,这两个对象可以针对不同的用途进行优化。互斥锁被设计为只保留很短的时间;违反此规定可能会导致性能不佳和调度不公平。例如,一个正在运行的线程可能被允许获取一个互斥锁,即使另一个线程已经被阻塞在它上面,创建一个 僵局 .信号量可以提供更多的公平性,或者可以使用多个条件变量来强制公平性。

关于multithreading - 信号量和互斥量在实现上有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4953496/

24 4 0