并发编程之线程的互斥锁
工作原理是将并行变成局部串行,牺牲了效率,保证了数据的安全。
未加锁:
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)
# 主

浙公网安备 33010602011771号