import threading,time,random,contextlib
cond=threading.Condition()
def fun(contextmanager):
with contextmanager or (random.choice([threading.Condition(),threading.Lock()])):#totally new instanceper each function
for i in ("".join("I start rush hour")):time.sleep(random.random()/10);print (i,end="")
for ctx_mgr in [cond,threading.Condition(),threading.Lock(),0,contextlib.suppress()]:
th=threading.Thread(target=fun,args=(ctx_mgr,))
th2=threading.Thread(target=fun,args=(ctx_mgr,))
th.start();th2.start();th.join();th2.join()
print()
因此有关普通(非新)条件实例的“有条件”语句已经像普通(非新)锁实例或至少线程一样工作了
使
等待相等的时间。
不需要cond.wait,不需要cond.notifyAll(),并且它们相同-线程只是分开进行
不需要锁吗?有没有办法让cond:活动重叠?