Python信号量:我需要负初始值

Job*_*obs 2 python multithreading synchronization operating-system semaphore

Python的信号灯不支持负初始值。那么,如何使一个线程等待其他8个线程完成某项操作呢?如果Semophore支持负的初始值,则可以将其设置为-8,并使每个线程将值增加1,直到我们获得0,从而解除阻塞正在等待的线程。

我可以在关键部分内手动增加全局计数器,然后使用条件变量,但是我想看看是否还有其他建议。

ffi*_*ari 5

当然答案来晚了,但对其他人来说可以派上用场。

如果要等待8个不同的线程执行某项操作,则只需等待8次。您可以使用以下命令将信号量初始化为0

s = threading.Semaphore(0)

然后

for _ in range(8):
    s.acquire()
Run Code Online (Sandbox Code Playgroud)

会做的工作。