互斥(mutex)和信号量(semaphore)的区别

互斥与信号量...

互斥(mutex)和信号量(semaphore)的区别

互斥与信号量

互斥锁类似于房间的一把钥匙。一个人拿着钥匙,就像一根线,是唯一能进入房间的人。有权限的人必须把钥匙交给下一个排队的人。因此,只有获取互斥锁的线程才能释放互斥锁。

互斥锁通常用于序列化对可重入代码“一种不能由多个线程同时执行的代码”的一部分的访问。一节中只允许有一个线程。这将强制队列中的其他线程等待。在线程获得访问权之前,它必须等到线程放弃该节。

在mutex中使用相同的类比,信号量是可以使用相似锁访问相同数量房间的相似钥匙的数量。信号量或信号量计数的值将取决于进出房间的人数(线程)。如果有5个房间都被占用,那么信号量计数为零。如果有两个人离开房间,那么计数是两个,这两把钥匙将交给队列中的下两个人。

也就是说,信号量可以由任何线程或进程同时发出信号,非常适合需要同步的应用程序。然而,基于最大信号量计数,信号量被用来有效地限制公共资源的并发用户数。

所以基本上,互斥可以被看作是一个值为1的信号量。

信号量的减少和增加取决于线程是请求访问公共资源还是离开节。

理论上,互斥和(二进制)信号量在语义上是相似的,互斥的实现可以用信号量来完成,反之亦然。然而,在实际意义上,它们可能有些不同。

互斥仅用于互斥,二进制信号量用于互斥和事件通知。尽管它们在实现和一般语义方面非常相似,但它们的用法却不同。

总结:

1.Mutex通常用于序列化对公共资源的访问,而信号量是多个并发访问。

互斥量就像一个计数为1的信号量。Mutex只允许单个线程访问,而信号量可以由任何线程或进程并发发出信号。

4.信号量是同步的理想选择,通常用于事件通知和互斥,而互斥仅用于互斥。

  • 发表于 2021-06-23 04:03
  • 阅读 ( 190 )
  • 分类:语言

你可能感兴趣的文章

范式(paradigm)和组合(syntagm)的区别

... 什么是范例(a paradigm)? 范式是在特定的句法角色中产生互斥选择的一组语言项目。范例关系包括可以互相替代的符号。这种替换通常会改变意思。在聚合关系中,一个词项通常可以被同一类别的另一个词项代替。例如,名词用...

  • 发布于 2020-10-24 22:28
  • 阅读 ( 486 )

divx公司(divx)和阿维(avi)的区别

...,而AVI负责如何存储数据以及其他相关信息4.DivX和AVI不是互斥的,也不是互斥的。DivX视频可能在另一个容器中,AVI文件可能有一个未在DivX中编码的视频 

  • 发布于 2021-06-22 12:38
  • 阅读 ( 300 )

互斥(mutex)和信号量(semaphore)的区别

互斥与信号量 互斥锁类似于房间的一把钥匙。一个人拿着钥匙,就像一根线,是唯一能进入房间的人。有权限的人必须把钥匙交给下一个排队的人。因此,只有获取互斥锁的线程才能释放互斥锁。 互斥锁通常用于序列化对可...

  • 发布于 2021-06-23 04:03
  • 阅读 ( 190 )

互斥(mutex)和事件(event)的区别

...量,与Mutex不同,Mutex在某些术语中更像amonitor,也可以是信号量/Mutex的传统形式。 总结: 1.event选项能够为线程提供阻塞选项,直到事件被广播,因此名为“event” 2.事件基本上是一个内核对象,它有两种状态。通常,一个事件...

  • 发布于 2021-06-23 17:48
  • 阅读 ( 166 )

互斥(mutex)和信号量(semaphore)的区别

互斥与信号量 互斥锁用于提供对可重入代码中不能由多个线程并行执行的部分的序列化访问。互斥确保一次只有一个代码可以访问受控部分。为了获得访问权限,其他代码被设置为等待第一个代码退出。你可以把它当作房间的...

  • 发布于 2021-06-23 19:42
  • 阅读 ( 464 )

僵局(deadlock)和操作系统操作系统中的饥饿(starvation in operating system os)的区别

...系统调度。当以下四个条件成立时,就会出现死锁情况:互斥意味着一次只能有一个进程访问一个资源;无抢占条件意味着资源只能由持有该资源的进程自动释放;Hold&wait是指一个拥有资源的进程可以请求其他进程拥有的额...

  • 发布于 2021-06-25 16:03
  • 阅读 ( 402 )

信号量(semaphore)和班长(monitor)的区别

...时,可能会导致争用情况。因此,有必要同步这些进程。信号量和监视器是实现进程同步的两种方法。 覆盖的关键领域 1.信号量定义,功能2.什么是监视器定义,功能3.信号量和监视器之间的区别-关键差异比较 关键术语 监视器...

  • 发布于 2021-07-01 22:09
  • 阅读 ( 597 )

自旋锁(spinlock)和互斥(mutex)的区别

...导致争用情况。因此,它可能导致数据不一致。自旋锁和互斥锁是两种同步进程或线程的技术。 覆盖的关键领域 1.什么是Spinlock–定义,功能2.什么是Mutex–定义,功能3.Spinlock和Mutex之间的区别–关键区别的比较 关键术语 锁定机...

  • 发布于 2021-07-01 22:46
  • 阅读 ( 323 )

僵局(deadlock)和饥饿(starvation in os)的区别

...系统中,死锁是常见的问题。产生死锁必须有四个条件:互斥、保持等待、无抢占和循环等待。 在饥饿状态下,低优先级进程被阻塞,高优先级进程继续进行。操作系统中有优先级,高优先级的进程被赋予一个资源,低优先级...

  • 发布于 2021-07-08 11:09
  • 阅读 ( 170 )

互斥的(mutually exclusive)和独立事件(independent events)的区别

...在概率上,有各种类型的事件,如简单事件、复合事件、互斥事件、穷举事件、独立事件、相依事件、可能性相等事件等。当事件不能同时发生时,称为互斥事件 另一方面,如果每个事件不受其他事件的影响,则称为独立事件...

  • 发布于 2021-07-09 07:23
  • 阅读 ( 3190 )

相关推荐