Hos*_*ser 3 synchronization semaphore
我正在尝试使用对这个问题的第一个回答来帮助我完成我正在进行的任务.具有0允许的信号量如何工作?这对我来说似乎没有多大意义.只是在那个信号量上创造一个永恒的等待吗?如果是这样的话,你怎么能有一个线程"越过"信号量,而它只是在等待一个永远不会给它的许可证?
再次来自信号量小书,§2.2:
清单2.1:信号量初始化语法
Run Code Online (Sandbox Code Playgroud)fred = Semaphore(1)该函数
Semaphore是一个构造函数; 它创建并返回一个新的信号量.信号量的初始值作为参数传递给构造函数.
所以在作者的pseduocode中,0不是许可证的数量; 它是信号量的初始值.零值是什么意思?它在文中立即进行清单2.1中的解释:
如果值为正,则表示可以在不阻塞的情况下递减的线程数.如果是负数,则表示已阻塞且正在等待的线程数.如果值为零,则表示没有线程在等待,但如果线程尝试递减,则它将阻塞.
(重点补充)
| 归档时间: |
|
| 查看次数: |
4585 次 |
| 最近记录: |