代码如下:
# coding=utf-8import timeimport threadingimport osdef doChore(): print "doChore start" time.sleep(0.5) print "doChore end"def booth(tid): global i global lock while True : print "tid:",tid,"lock start" lock.acquire() if i != 0 : print "tid:",tid,"得到了第",i,"张票" i = i -1 print "now left tickets:",i doChore() else : print "tid:",tid,"no more tickets!" os._exit(0) lock.release() print "tid:",tid,"lock end" doChore()i = 100lock = threading.Lock()for k in xrange(1,5): print "第",k,"个线程" new_thread = threading.Thread(target=booth,args=(k,)) new_thread.start()运行结果如下:
最后线程1并没有release释放锁,请问为什么会这样? |