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

多线程 -- 同步锁

时间:2018-08-30 14:27:55      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:append   targe   lock   nbsp   lease   nal   共享变量   bsp   import   

  • 多个线程同时操作一个变量
import time
import threading

def addNum():
    #在每个线程中都获取这个全局变量
    global num

    temp = num
    time.sleep(0.1)
    #对此公共变量进行-1操作
    num = temp-1

#设定一个共享变量
num = 100
thread_list = []
for i in range(100):
    t = threading.Thread(target=addNum)
    t.start()
    thread_list.append(t)

#等待所有线程执行完毕
for t in thread_list:
    t.join()

print(‘final num:‘, num )

输出:
99

 技术分享图片

 

  • 同步锁,acquire和release之间的代码,在同一时间只会被一个线程执行
import time
import threading

def addNum():
    global num

    lock.acquire()
    temp = num
    time.sleep(0.1)
    num = temp-1
    lock.release()

num = 100
thread_list = []
lock = threading.Lock()

for i in range(100):
    t = threading.Thread(target=addNum)
    t.start()
    thread_list.append(t)

for t in thread_list:
    t.join()

print(‘final num:‘, num )

输出:
0

 

多线程 -- 同步锁

标签:append   targe   lock   nbsp   lease   nal   共享变量   bsp   import   

原文地址:https://www.cnblogs.com/dongmengze/p/9559660.html

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