互斥量(Mutex)用于提供对部分重入代码的序列化访问,这些部分不能由多个线程并行执行。互斥锁确保一次只能有一个代码可以访问受控部分。为了获得访问权限,使其他代码等待直到第一个代码退出。您可以认为它就像是房间的钥匙。在使用钥匙的人返回之前,其他人不能可以进入该房间。

信号量使多个用户可以同时访问共享资源。随着访问资源的用户数量的增加,信号量减少。一旦用户开始释放资源,信号量就会再次开始增加。由需要同步的应用程序使用。并发用户数受信号量限制的限制。信号量可以看作是一堆类似的钥匙,类似于对单个房间的类似锁,但是这些钥匙的数量有限。拥有这些钥匙的人可以共享房间。

互斥量和信号量之间的区别:

  1. 互斥量用于互斥,而信号量在两种情况下都可以找到其效用通知和互斥。
  2. 互斥量提供对公共资源的串行访问,而信号量则限制了并发访问数。
  3. 互斥锁一次只能使用一个线程,而信号量则管理多个线程。
  4. 互斥量具有所有者的概念,其中锁定互斥锁的过程只能重新打开它。其他进程都不能这样做。但是在信号量的情况下限制不存在。
  5. 互斥是一种锁定机制,而信号量是一种具有以下功能的信号传递机制:关于同步对资源的访问。

总结

  1. 从语义上和理论上,互斥量和信号量是相同的。一个可以使用另一个实现,但实际上两者是不同的。
  2. 互斥量不过是计数值等于1的信号量。
  3. 互斥量是具有所有权和优先级反转等附加功能的信号灯保护。
  4. 信号量是一种抽象数据类型,它通过以下方式控制对公共资源的访问并行编程环境中的多个进程。
  5. 信号量在许多操作系统中都可以用作同步原语。
  6. 互斥量和信号量都是内核资源,用于以下目的:同步。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:互斥量和信号量
本文链接:https://www.vsdiffer.com/vs/mutex-vs-semaphore.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。