【发布时间】:2021-09-03 17:16:29
【问题描述】:
我是一名学生,目前正在研究操作系统的并发——信号量。 我阅读有关信号量、互斥量和信号量的书籍和文章......但似乎无法回答标题的条件。
存在一个信号量,信号量可以用作“二进制信号量”和“计数信号量”,按初始值分类。 我了解二进制信号量可以通过与互斥锁类似的行为来防止竞争条件(但由于各种原因,两者并不相同。)
我比较好奇的是,当我们初始化大于等于2的信号量值,比如说n,那么n个值就可以进入临界会话。那么这种信号量的使用会导致竞争条件吗?
我阅读了有关计数信号量的文章,并且认为它们被认为是跟踪对资源的访问,我对此感到困惑 难道我们不是这样使用counting semaphore吗,不是用来解决并发问题的counting semaphore吗?
添加在下面是因为我的问题不详细。
例如,当有100个线程时,我初始化X=10,然后用sem_init(&s, 0, X)初始化信号量,如果线程的代码流中有一个关键会话,那么它不会因为10而导致竞争条件是否允许线程使用资源并通过线程的流程?
【问题讨论】:
-
你不需要说“如果这是一个不好的问题,我会删除它。”事实上,每个人都会犯错误。 秘密:我问了太多不好的问题。一个不好的问题不会给你惹麻烦。
-
CS StackExchange 将是解决此类问题的更好地方
-
@Someone_who_likes_SE 。我编辑了那行。谢谢!
标签: semaphore