1.互斥锁的使用
import threading
g_num = 0
lock = threading.Lock()
def sum_num1():
lock.acquire()
for i in range(1000000):
global g_num
g_num += 1
print("sum1:", g_num)
lock.release()
def sum_num2():
lock.acquire()
for i in range(1000000):
global g_num
g_num += 1
print("sum2:", g_num)
lock.release()
if __name__ == '__main__':
first_thread = threading.Thread(target=sum_num1)
second_thread = threading.Thread(target=sum_num2)
first_thread.start()
second_thread.start()
2. 小结
- 互斥锁的作用就是保证同一时刻只能有一个线程去操作共享数据,保证共享数据不会出现错误问题
- 使用互斥锁的好处确保某段关键代码只能由一个线程从头到尾完整地去执行
- 使用互斥锁会影响代码的执行效率,多任务改成了单任务执行
- 互斥锁如果没有使用好容易出现死锁的情况