码迷,mamicode.com
首页 > 编程语言 > 详细

5.1.15 线程的互斥锁

时间:2018-06-16 21:05:05      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:技术分享   TE   play   thread   view   splay   time   互斥锁   作用   

from threading import Thread, Lock
import time

n = 100


def task():
    global n
    # mutex.acquire()
    temp = n
    time.sleep(0.1)
    n = temp - 1
    # mutex.release()


if __name__ == __main__:
    # mutex = Lock()
    t_l = []
    for i in range(100):
        t = Thread(target=task)
        t_l.append(t)
        t.start()

    for t in t_l:
        t.join()

    print(, n)

运行结果:

技术分享图片
主 99
View Code

 

加了互斥锁:

# mutex
from threading import Thread, Lock
import time

n = 100


def task():
    global n
    mutex.acquire()
    temp = n
    time.sleep(0.1)
    n = temp - 1
    mutex.release()


if __name__ == __main__:
    mutex = Lock()   # 与子进程的区别是:子线程共享进程内的内存空间,所以无需把锁传给线程。进程内的所有线程用的就是同一把锁。
             # 开进程的话,进程与子进程之间的数据是独占的,所以各子进程之间的数据都是独立的,锁也就不是同一把锁。故需要把锁传给子进程,确保各子进程用的是同一把锁。 t_l
= [] for i in range(100): t = Thread(target=task) t_l.append(t) t.start() for t in t_l: t.join() print(, n)

运行结果:

技术分享图片
主 0
View Code

 

互斥锁的作用:将并行变成串行。

5.1.15 线程的互斥锁

标签:技术分享   TE   play   thread   view   splay   time   互斥锁   作用   

原文地址:https://www.cnblogs.com/beallaliu/p/9191368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!