zoukankan      html  css  js  c++  java
  • 互斥锁

    一、互斥锁介绍及特点

      

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

      特点:

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

        谁先抢到锁是由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

    运行结果:

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

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

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

      

      

  • 相关阅读:
    HDU
    HYSBZ
    HDU
    POJ
    HDU
    HDU
    HDU
    「luogu2680」[NOIp2015] 运输计划
    「luogu1417」烹调方案
    网络(最大)流初步+二分图初步 (浅谈EK,Dinic, Hungarian method:]
  • 原文地址:https://www.cnblogs.com/yujiemeigui/p/14304970.html
Copyright © 2011-2022 走看看