Job*_*obs 2 python multithreading synchronization operating-system semaphore
Python的信号灯不支持负初始值。那么,如何使一个线程等待其他8个线程完成某项操作呢?如果Semophore支持负的初始值,则可以将其设置为-8,并使每个线程将值增加1,直到我们获得0,从而解除阻塞正在等待的线程。
我可以在关键部分内手动增加全局计数器,然后使用条件变量,但是我想看看是否还有其他建议。
当然答案来晚了,但对其他人来说可以派上用场。
如果要等待8个不同的线程执行某项操作,则只需等待8次。您可以使用以下命令将信号量初始化为0
s = threading.Semaphore(0)
然后
for _ in range(8):
s.acquire()
Run Code Online (Sandbox Code Playgroud)
会做的工作。