#coding=utf-8
import threading
import time
#创建三把互斥锁
lock1=threading.Lock()
lock2=threading.Lock()
lock3=threading.Lock()
#lock2 lock3上锁
lock2.acquire()
lock3.acquire()
class Mythread1(threading.Thread):
def run(self):
while True:
if lock1.acquire(): #判断lock1并未上锁,因此这里可以正常上锁,为真,所以后面代码可以执行
print('...task1...')
time.sleep(1)
lock2.release()
class Mythread2(threading.Thread):
def run(self):
while True:
if lock2.acquire():
print('...task2...')
time.sleep(1)
lock3.release()
class Mythread3(threading.Thread):
def run(self):
while True:
if lock3.acquire():
print('...task3...')
time.sleep(1)
lock1.release()
if __name__=='__main__':
t1=Mythread1()
t2=Mythread2()
t3=Mythread3()
t1.start()
t2.start()
t3.start()
结果:会循环往复按如下的顺序执行
...task1...
...task2...
...task3...
...task1...
...task2...
...task3...
...task1...
...task2...
...task3...
线程同步的使用
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 共17篇博文【白话经典算法系列之十七】 数组中只出现一次的数数组A中,除了某一个数字x之外,其他数字都出现了三次,...
- 什么是线程安全? 当多个线程访问一个对象时,如果不用考虑这些线程的访问方式和如何进行交替执行,主程序中也不需要进行...
- 1. NDK你必须学习的技术,pthread线程创建2. NDK你必须学习的技术,pthread线程同步互斥锁的使...
- 一. AFURLSessionManager 中的 completionQueue 和 completionGro...