gpt4 book ai didi

c - 当互斥体可用时在哪里使用二进制信号量?

转载 作者:太空狗 更新时间:2023-10-29 17:20:45 24 4
gpt4 key购买 nike

在阅读二进制信号量和互斥锁时,我发现了以下区别:

Both can have value 0 and 1, but mutex can be unlocked by the same thread which has acquired the mutex lock. A thread which acquires mutex lock can have priority inversion in case a higher priority process wants to acquire the same mutex whereas this is not the case with binary semaphore.

那么我应该在哪里使用二进制信号量呢?谁能举个例子?

编辑:我想我已经弄清楚了两者的工作原理。基本上二进制信号量提供同步,而互斥量提供锁定机制。我从 Galvin OS 书中阅读了一些示例以使其更加清晰。

最佳答案

我发现二进制信号量非常有用的一种典型情况是用于线程初始化,其中线程将从父线程拥有的结构中读取。父线程需要等待新线程从结构中读取共享数据,然后才能让结构的生命周期结束(例如,通过离开其作用域)。使用二进制信号量,您所要做的就是将信号量值初始化为零,并让 child 在 parent 等待它的同时发布它。如果没有信号量,您将需要一个互斥体和条件变量以及更丑陋的程序逻辑来使用它们。

关于c - 当互斥体可用时在哪里使用二进制信号量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com