博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 线程条件变量锁
阅读量:5037 次
发布时间:2019-06-12

本文共 1419 字,大约阅读时间需要 4 分钟。

# _*_coding:utf-8_*_# author:leo# date:# email:alplf123@163.comimport queue, threadingclass Worker(threading.Thread):    def __init__(self):        threading.Thread.__init__(self)        self.lock = threading.Lock()        self.con1 = threading.Condition(self.lock)        self.con2 = threading.Condition(self.lock)        self.event = threading.Event()# 也可以达到类似的效果,但是不够灵活,运用的场景不够丰富,此类也是线程安全        self.queque = queue.Queue()        print(self.event.is_set())        def run(self):        threading.Thread(target=self.customer).start()        threading.Thread(target=self.producter).start()    def producter(self):        with self.con1:            for a in range(100):                print('productor put:', str(a))                self.queque.put(a)                self.con2.notify()                self.con1.wait() #使用wait 必须保证当前是安全的 必须得到锁                print('recevie sigal from con1 producting...')            self.con2.notify_all()    def customer(self):        with self.con2:            while True:                self.con2.wait()                print('recevie signal from con2 customer....')                if self.queque.empty():                    break                result = self.queque.get()                if result is not None:                    print('customer get:', str(result))                    self.con1.notify()t = Worker()t.start()t.join()

 

转载于:https://www.cnblogs.com/alplf123/p/8542207.html

你可能感兴趣的文章
Oracle T4-2 使用ILOM CLI升级Firmware
查看>>
4.14上午
查看>>
数据分析 -- 白话一下什么是决策树模型(转载)
查看>>
Java SPI机制原理和使用场景
查看>>
web前端java script学习2017.7.18
查看>>
删除TXPlatform
查看>>
LaTex:图片排版
查看>>
并发访问超时的问题可能性(引用)
查看>>
中小团队基于Docker的Devops实践
查看>>
利用python打开摄像头并保存
查看>>
System函数的使用说明
查看>>
Selenium-测试对象操作之:获取浏览器滚动条滚动距离
查看>>
Linux下MySQL数据库安装与配置
查看>>
Extjs String转Json
查看>>
oracle入门(4)——少而常用的命令
查看>>
打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机...
查看>>
Java 虚拟机部分面试题
查看>>
二叉树的遍历问题总结
查看>>
Spring之面向切面编程AOP
查看>>
MATLAB GUI程序设计中使文本框接收多行输入的方法
查看>>