★ Contidion wait+notify方法

  在调用 with cond 之后才能调用wait和notify方法
在condition 里面有两层锁,一把锁会在线程调用wait方法的时候释放,上面的锁会在每次调用wait的时候分配一把并
放入cond中的等待队列中,知道notify方法唤醒




此处唤醒的进程时随机!!!

 

聊天尝试对两个进程互相切换的实现

 

复制代码
 1 import threading
 2 
 3 from threading import Condition
 4 
 5 class ZhangSan(threading.Thread):
 6     def __init__(self,cond):
 7         super().__init__(name='张三')
 8         self.cond=cond
 9 
10     def run(self):
11         with self.cond:
12             print("{}:你好".format(self.name))        #1
13             self.cond.notify()
14             self.cond.wait()
15 
16             print("{}:lalala".format(self.name))
17             self.cond.notify()
18             self.cond.wait()
19 
20 
21 class LiSi(threading.Thread):
22     def __init__(self,cond):
23         super().__init__(name='李四')
24         self.cond = cond
25     def run(self):
26         with self.cond:
27             self.cond.wait()            #关键
28             print("{}:你好".format(self.name))
29             self.cond.notify()
30 
31             self.cond.wait()
32             print("{}:滚犊子".format(self.name))
33             self.cond.notify()
34             # print("{}:滚犊子".format(self.name))
35 
36 
37 if __name__ == '__main__':
38     cond = threading.Condition()
39     zhangsan = ZhangSan(cond)
40     lisi = LiSi(cond)
41 
42     #   程序的执行顺序
43     lisi.start()
44     zhangsan.start()
复制代码

 

posted @   酸辣土豆皮  阅读(148)  评论(0编辑  收藏  举报
编辑推荐:
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
· drools 规则引擎和 solon-flow 哪个好?solon-flow 简明教程

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示