其他进程不会被使用信号量唤醒

时间:2017-11-06 00:25:00

标签: multithreading operating-system semaphore

以下代码来自Wiki

s

当容量为1(wait初始化为1)时,如果我有2个以上的进程怎么办?例如,进程1进入关键会话。然后,进程2和3调用ssignal现在等于-2。然后,流程1完成并调用ss >= 0变为-1。由于File "<ipython-input-10-2863e455a5c5>", line 7 array.append(county_df.where(county_df['STNAME']=state)) ^ SyntaxError: keyword can't be an expression 不满意,因此过程2和3永远不会被唤醒。这里的问题是什么?

1 个答案:

答案 0 :(得分:0)

看看

https://en.wikipedia.org/wiki/Semaphore_(programming)

而不是维基书籍链接。

在wiki文章和Windows中,信号量为零或具有正数,并且可以使用无符号整数来实现计数。如果信号量已经为零,则信号量的等待函数不会递减信号量,而是等待它。如果多个进程或线程正在等待count == 0的信号量,那么如果信号量增加1,则只会唤醒其中一个进程或线程(并且信号量减少回零),并且它正在运行系统依赖于哪一个将被唤醒。

链接到Windows信号量描述以及信号量函数的附加链接。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms685129(v=vs.85).aspx