
互斥锁可以对共享数据进行锁定,保证同一时刻只有一个线程可以执行,对于加锁的部分,只有单线程的效果,,对于整体而言,还是多线程
注意:互斥锁是多个线程一起去抢,抢到就先执行,没有抢到就继续等待,等锁使用完后释放,其他线程才可以去抢这个锁
锁的创建:mutex = thread.Lock()
上锁:mutex.acquire()
释放锁:mutex.release()
注意:使用互斥锁要避免死锁情况出现,死锁产生的原因就是没有及时或者在正确的位置释放锁
import threading import time num = 0 def sum_num1(): """加锁""" mutex.acquire() for i in range(1000000): global num num += 1 """释放锁""" # mutex.release() print("sum_num1:",num) def sum_num2(): """加锁""" mutex.acquire() for i in range(1000000): global num num += 1 mutex.release() print("sum_num2:",num) if __name__ == '__main__': """创建锁""" mutex = threading.Lock() """创建线程对象并启动""" sum1_thread = threading.Thread(target=sum_num1) sum2_thread = threading.Thread(target=sum_num2) sum1_thread.start() sum2_thread.start()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)