美文网首页
线程 -- 互斥锁

线程 -- 互斥锁

作者: glRu | 来源:发表于2020-07-28 00:12 被阅读0次

互斥锁的使用步骤:

# 创建锁

mutex = threading.Lock()

# 上锁

mutex.acquire()

#这里编写代码保证同一时刻只能有一个线程去操作,对共享数据进行锁定

# 排放锁

mutex.release()

例子:

import threading

# 全局变量

g_num= 0

# 创建互斥锁,Lock本质上是一个函数,通过调用函数创建一个互斥锁

lock= threading.Lock()

def task1():

    # 上锁

    lock.acquire()

    for iin range(10000):

        global g_num

g_num+= 1

    print("task1:", g_num)

    # 释放锁

    lock.release()

def task2():

    # 上锁

    lock.acquire()

    for iin range(10000):

        global g_num

g_num+= 1

    print("task2:", g_num)

    # 释放锁

    lock.release()

def main():

    # target 指定这个线程去哪个函数执行代码

    # args 指定调用函数所传递的参数,且 args 需为元组

    t1= threading.Thread(target=task1,)

    t2= threading.Thread(target=task2,)

    t1.start()

    # time.sleep(1)

    t2.start()

    # time.sleep(1)

    # 互斥锁可以保证同一时刻只有一个线程去执行代码,能保证全局变量数据的正确

    # 线程等待和互斥锁都是把多任务改成单任务去执行,保证了数据的准确性,但执行性能下降

if __name__== '__main__':

    main()

相关文章

  • 线程同步与互斥

    Linux--线程编程 多线程编程-互斥锁 线程同步与互斥 互斥锁 信号量 条件变量 互斥锁 互斥锁的基本使用...

  • C++11多线程互斥锁`mutex`,`unique_lock`

    C++11多线程互斥锁mutex,unique_lock,lock_guard 互斥锁   互斥锁是线程中常用的线...

  • 守护线程/线程互斥锁

    守护线程 线程互斥锁

  • 网络之美

    线程安全问题----互斥锁和递归锁 互斥锁线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制就是引入互斥锁...

  • ReentrantReadWriteLock用法

    读读锁不互斥 结果如下,读读锁不互斥,三个线程同时结束 写写锁互斥 可以看到三个线程依次完成 读写互斥 可以看到和...

  • C链表

    互斥锁:链表用在多线程中保证顺序,多个线程会操作同一个链表,互斥锁保证多线程操作的安全,互斥锁分情况使用,链表并不...

  • 2018-07-26 抖音面试题汇总

    互斥锁、自旋锁、递归锁啥区别? 都是保证只有一个线程访问对象的锁。互斥会睡眠线程,自选会循环访问,递归是特殊的互斥...

  • 24.读写锁

    读写锁(ReentrantReadWriteLock)就是读线程和读线程之间不互斥。读读不互斥,读写互斥,写写互斥...

  • 可重入读写锁 ReentrantReadWriteLock

    读写锁分为读锁和写锁,多个线程获取读锁不互斥,读写锁、写写锁互斥。 输出

  • iOS底层探索-多线程锁

    多线程的锁大致可分为两大类:互斥锁、自旋锁;也可以分为三类:互斥锁、自旋锁、读写锁。 一、互斥锁:互斥+同步(强调...

网友评论

      本文标题:线程 -- 互斥锁

      本文链接:https://www.haomeiwen.com/subject/xzftrktx.html