Python多线程同步实例分析(4)

import threading import time rlock = threading.RLock() # step 1: 创建重入锁 share_data = 0 def check_data(): global share_data if rlock.acquire(): if share_data > 10: share_data = 0 rlock.release() def tstart(arg): time.sleep(0.1) global share_data if rlock.acquire(): # step 2: 获取重入锁,否则阻塞当前线程 check_data() share_data += 1 rlock.release() # step 3: 释放重入锁 if __name__ == '__main__': t1 = threading.Thread(target = tstart, args = ('',)) t1.start() t1.join() print("This is main function at:%s" % time.time()) print 'share_data result:', share_data

这个例子如果使用互斥锁,就会导致当前线程阻塞。

信号量Semaphore

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bab83c7945682ba42daa254705097e2d.html