python使用condition实现一个简易的栅栏,CyclicBarriar
2017-01-11 14:42
507 查看
''' Created on 2017-1-11 @author: admin ''' from threading import Condition, Thread class CyclicBarriar(): def __init__(self,job,count): self.condition=Condition() self.job=job; self.count=count def await(self): self._doAwait() def _doAwait(self): try: self.condition.acquire() self.count-=1 if self.count==0: if self.job!=None: self.job.run() self.condition.notifyAll() else: self.condition.wait() finally: self.condition.release() if __name__ == '__main__': class SubThread(Thread): def __init__(self,name,barriar): Thread.__init__(self) self.name=name; self.barriar=barriar def run(self): print("finishing %s"%self.name) self.barriar.await() class MainThread(Thread): def __init__(self): Thread.__init__(self) def run(self): print("finishing main thread") barrair=CyclicBarriar(MainThread(),3) thread1=SubThread("thread one",barrair) thread2=SubThread("thread second",barrair) thread3=SubThread("thread third",barrair) thread1.start() thread2.start() thread3.start()
相关文章推荐
- 使用opengl实现一个简易的robot模拟
- 使用python3的base64编解码实现字符串的简易加密解密
- 使用MVVM框架avalon.js实现一个简易日历
- Python 实现的一个使用接口的实例
- 使用python的Flask实现一个RESTful API服务器端
- 使用Python实现一个小型的航空订票系统(1)
- 使用python多线程实现一个简单spider
- 使用java并发工具栅栏(CyclicBarrier)实现多线程等待,同一时刻执行共同任务
- 使用nodejs、Python写的一个简易HTTP静态文件服务器
- Python中使用wxPython开发的一个简易笔记本程序实例
- 使用Python实现一个小型的航空订票系统(3)
- 用Python 实现刷钻网上抢任务,并实现一个简单的限制使用时间的功能
- 使用python3的base64编解码实现字符串的简易加密解密
- OpenCV(Emgu)入门系列(9):在C#中,使用Emgu+PictureBox实现一个简易的视频播放器
- 使用python的Flask实现一个RESTful API服务器端[翻译]
- 使用python多线程实现一个简单spider
- Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]
- 使用python3的base64编解码实现字符串的简易加密解密
- 使用VC内嵌Python实现的一个代码检测工具
- 使用python的Flask实现一个RESTful API服务器端[翻译]