首页 > 其他 > 详细

互斥锁

时间:2021-01-20 23:16:13      阅读:30      评论:0      收藏:0      [点我收藏+]

 

一、互斥锁介绍及特点

  

  说明:对共享数据进行锁定,保证同一时刻只有一个线程去操作。

 

  特点:

    互斥锁是多个线程一起去抢。

    谁先抢到锁是由CPU的调度决定的

    没有抢到锁的线程需要等待,此时进入阻塞状态。

    互斥锁使用完释放后,其它等待的线程会再去抢这个锁

 

二、语法

  

  

  import threading

  # 创建锁

  锁对象 = threading.Lock()

  # 上锁

  锁对象.acquire()

  # 释放锁

  锁对象.release()

 

 

三、互斥锁的使用

 

  1、使用互斥锁

  

技术分享图片
from threading import Thread,Lock
from time import time

g_num = 0

# 1.创建锁
mutex = Lock()


def sum_num1():
    # 2.在需要操作的数据位置上锁
    mutex.acquire()

    for i in range(1000000):
        global g_num
        g_num += 1

    print("sum1:", g_num)

    # 3.释放锁
    mutex.release()


def sum_num2():
    # 上锁
    mutex.acquire()
    for i in range(1000000):
        global g_num
        g_num += 1
    print("sum2:", g_num)

    # 释放锁
    mutex.release()


if __name__ == __main__:
    t1 = Thread(target=sum_num1)
    t2 = Thread(target=sum_num2)

    t1.start()
    t2.start()
View Code

 

 

运行结果:

 

技术分享图片

 

 

 

 

四、使用线程等待或互斥锁的优缺点

 

  优点:保证了数据的准确性

  缺点:将多任务转换成单任务去执行,执行性能下降。

  

 

 

  

互斥锁

原文:https://www.cnblogs.com/yujiemeigui/p/14304970.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!