threading.Condition用作threadng.Lock

时间:2018-07-21 11:43:17

标签: multithreading locking conditional-statements

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:活动重叠?

0 个答案:

没有答案