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

线程 -- 互斥锁

作者: 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()

    相关文章

      网友评论

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

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