import threading, time
'''
class myThread(threading.Thread):
def doA(self):
lockA.acquire()
print(self.name,'gotlockA',time.ctime())
time.sleep(3)
lockB.acquire()
print(self.name,'gotlockB',time.ctime())
lockB.release()
lockA.release()
def doB(self):
lockB.acquire()
print(self.name,'gotlockB',time.ctime())
time.sleep(2)
lockA.acquire()
print(self.name, 'gotlockA', time.ctime())
lockA.release()
lockB.release()
def run(self):
self.doA()
self.doB()
if __name__ == '__main__':
lockA = threading.Lock()
lockB = threading.Lock()
threads = []
for i in range(5):
threads.append(myThread())
for t in threads:
t.start()
for t in threads:
t.join()
'''
class myThread(threading.Thread):
def doA(self):
lock.acquire()
print(self.name,'gotlockA',time.ctime())
time.sleep(3)
lock.acquire()
print(self.name,'gotlockB',time.ctime())
lock.release()
lock.release()
def doB(self):
lock.acquire()
print(self.name,'gotlockB',time.ctime())
time.sleep(2)
lock.acquire()
print(self.name, 'gotlockA', time.ctime())
lock.release()
lock.release()
def run(self):
self.doA()
self.doB()
if __name__ == '__main__':
lock = threading.RLock()
threads = []
for i in range(5):
threads.append(myThread())
for t in threads:
t.start()
for t in threads:
t.join()
out:
Thread-12 gotlockA Sat Apr 25 21:43:25 2020
Thread-12 gotlockB Sat Apr 25 21:43:28 2020
Thread-12 gotlockB Sat Apr 25 21:43:28 2020
Thread-12 gotlockA Sat Apr 25 21:43:30 2020
Thread-14 gotlockA Sat Apr 25 21:43:30 2020
Thread-14 gotlockB Sat Apr 25 21:43:33 2020
Thread-14 gotlockB Sat Apr 25 21:43:33 2020
Thread-14 gotlockA Sat Apr 25 21:43:35 2020
Thread-16 gotlockA Sat Apr 25 21:43:35 2020
Thread-16 gotlockB Sat Apr 25 21:43:38 2020
Thread-16 gotlockB Sat Apr 25 21:43:38 2020
Thread-16 gotlockA Sat Apr 25 21:43:40 2020
Thread-15 gotlockA Sat Apr 25 21:43:40 2020
Thread-15 gotlockB Sat Apr 25 21:43:43 2020
Thread-13 gotlockA Sat Apr 25 21:43:43 2020
Thread-13 gotlockB Sat Apr 25 21:43:46 2020
Thread-15 gotlockB Sat Apr 25 21:43:46 2020
Thread-15 gotlockA Sat Apr 25 21:43:48 2020
Thread-13 gotlockB Sat Apr 25 21:43:48 2020
Thread-13 gotlockA Sat Apr 25 21:43:50 2020