PYTHON线程知识再研习D---可重入锁

时间:2021-09-22 20:07:13

不多解释,预防普通锁不正规的获取与释放

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import threading
import time

class MyThread(threading.Thread):
    def run(self):
        global num
        time.sleep(1)

        if mutex.acquire(1):
            num += 1
            msg = self.name + ' set num to ' + str(num)
            print msg
            mutex.acquire()
            mutex.release()
            mutex.release()

num = 0
mutex = threading.RLock()
def test():
    for i in range(5):
        t = MyThread()
        t.start()
    t.join()
    print 'ALL DONE'

if __name__ == '__main__':
    test()