以下代码来自Wiki。
s
当容量为1(wait
初始化为1)时,如果我有2个以上的进程怎么办?例如,进程1进入关键会话。然后,进程2和3调用s
。 signal
现在等于-2。然后,流程1完成并调用s
。 s >= 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永远不会被唤醒。这里的问题是什么?
答案 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