ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

线程同步锁

2022-01-11 12:33:51  阅读:169  来源: 互联网

标签:同步 start 0.01 threading 线程 time print sleep


#同步锁
对于两个函数a,b,创建两条线程,并且让其睡眠,流程上看似轮流运行,其实不是,因为涉及到cpu切换去执行问题。
import threading
import time

def a():

for i in range(3):
print("a:"+str(i))
time.sleep(0.01)


def b():

for i in range(3):
print("b:"+str(i))
time.sleep(0.01)

a=threading.Thread(target=a)
b=threading.Thread(target=b)
a.start()
b.start()

#输出结果:
a:0
b:0
b:1
a:1
b:2 a:2

但是如果想让a先执行完毕再去执行b,则使用到同步锁
import threading
import time
r=threading.Lock() #创建锁
def a():
r.acquire() #获取锁
for i in range(3):
print("a:"+str(i))
time.sleep(0.01)
r.release() #释放锁

def b():
r.acquire()
for i in range(3):
print("b:"+str(i))
time.sleep(0.01)
r.release()
a=threading.Thread(target=a)
b=threading.Thread(target=b)
a.start()
b.start()

输出结果:
a:0
a:1
a:2
b:0
b:1
b:2

标签:同步,start,0.01,threading,线程,time,print,sleep
来源: https://www.cnblogs.com/ainiforever20220101/p/15787790.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有