互斥锁

489 阅读1分钟
互斥锁:对共享数据进行锁定,保证同一时刻只能有一个线程去操作。
​ 互斥锁是多个线程一起去抢,抢到锁的线程先执行,没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁。
互斥锁的使用:
  1. # 创建锁
  2. mutex = threading.Lock()
  3. # 上锁
  4. metex.acquire()
  5. # 释放锁
  6. metex.release()
复制代码

示例代码
  1. import threading

  2. # 定义全局变量
  3. g_num = 0
  4. # 创建全局互斥锁
  5. lock = threading.Lock()

  6. def sum_num1():
  7. # 上锁
  8. lock.acquire()
  9. global g_num
  10. for i in range(1000000):
  11. g_num += 1
  12. # 释放锁
  13. lock.release()
  14. print("线程1结束后的计算值sum1为:", g_num)


  15. def sum_num2():
  16. # 上锁
  17. lock.acquire()
  18. global g_num
  19. for i in range(1000000):
  20. g_num += 1
  21. # 释放锁
  22. lock.release()
  23. print("线程2结束后的计算值sum2为:", g_num)

  24. if __name__ == '__main__':
  25. # 创建两个线程
  26. first_thread = threading.Thread(target=sum_num1)
  27. second_thread = threading.Thread(target=sum_num2)

  28. # 启动线程
  29. first_thread.start()
  30. # 启动线程
  31. second_thread.start()

  32. """
  33. 执行结果:
  34. 线程1结束后的计算值sum1为: 1000000
  35. 线程2结束后的计算值sum2为: 2000000
  36. """
复制代码

更多Python学习资料可关注:itheimaGZ获取