工作原理是将并行变成局部串行,牺牲了效率,保证了数据的安全。
import time
from threading import Thread
n = 100
def task():
global n
# mutex.acquire()
temp = n
time.sleep(0.1)
n = temp - 1
# mutex.release()
if __name__ == '__main__':
# mutex = Lock()
t_1 = []
for i in range(100):
t = Thread(target=task)
t_1.append(t)
t.start()
for t in t_1:
t.join()
print('主', n)
结果:
主 99
import time
from threading import Thread, Lock
n = 100
def task():
global n
mutex.acquire()
temp = n
time.sleep(0.1)
n = temp - 1
mutex.release()
if __name__ == '__main__':
mutex = Lock()
t_1 = []
for i in range(100):
t = Thread(target=task)
t_1.append(t)
t.start()
for t in t_1:
t.join()
print('主', n)
结果:
主 0