Mutex和Semaphore

Anonim

Mutex vs Semaphore

Mutex用于提供对不能由多个线程并行执行的重入代码的一部分的序列化访问。互斥锁确保一次只能有一个代码访问受控部分。要获得访问权限,其他代码将等待第一个代码退出。你可以认为它就像一个房间的钥匙。有权访问该密钥的人首先出现。在此人返回之前,没有其他人可以访问该房间。

信号量可以同时为多个用户提供共享资源。随着访问资源的用户数量的增加,信号量计数减少。一旦用户开始释放资源,信号量计数就会再次开始上升。它由需要同步的应用程序使用。根据信号量限制限制并发用户数。信号量可以被认为是一组类似于单个房间锁的类似密钥,但这些密钥的数量有限。拥有这些钥匙的人可以共享房间。

互斥锁和信号量之间的差异:

1.互斥用于互斥,而信号量在两种情况下都能找到它的效用

通知和互斥。

2. Mutex提供对公共资源的串行访问,而信号量则限制

并发访问次数。

3.互斥锁一次处理一个线程,而信号量管理多个线程

一起。

4. Mutex有一个所有者的概念,其中只能锁定互斥锁的进程

重新打开它。其他任何进程都不能这样做。但在信号量的情况下,如此

限制不存在。

互斥锁是一种锁定机制,而信号量是一种信号机制

尊重同步对资源的访问。

摘要:

1.在语义上和理论上,互斥量和信号量都是相同的。一个可以

使用另一个实现,但实际上两者都不同。

互斥锁只不过是一个计数值等于1的信号量。

3.互斥锁是一种信号量,具有所有权和优先级倒置等附加功能

保护。

信号量是一种抽象数据类型,用于控制对公共资源的访问

并行编程环境中的多个进程。

信号量发现它在许多操作系统中用作同步原语。

6.互斥和信号量都是用于目的的内核资源

同步。