我无法想到python多线程中这个逻辑问题的解决方案
创建的每个线程都执行此操作:
主线程是这样做的:
洞是线程可以在主线程有机会阻挡C2之前完成。不太可能发生,但可能会发生。如果发生这种情况,主线程将永远被阻止。一个混乱的解决方案是主线程执行非阻塞等待并检查计数器。我想要更清洁的解决方案。但我想不出一个。
答案 0 :(得分:0)
所有工作线程都是在程序开始时创建的,从不销毁
def worker():
global c1,c2,nt,lnt
while true:
c1.acquire()
c1.wait()
c1.release()
Do the computations
lnt.acquire()
nt -= 1
if nt == 0:
c2.acquire()
c2.notify()
c2.release()
lnt.release()
def main():
for i in range(100000):
c2.acquire()
nt = numthreads
c1.acquire()
c1.notifyAll()
c1.release()
c2.wait()
c2.release()
process computed data