zoukankan      html  css  js  c++  java
  • 线程Event

    Event是一个简单的同步的对象。

    event = threading.Event()  生成event对象

    event.set()  设置标志位

    event.clear()  清空标志位

    event.wait()   等待标志位被设定(阻塞)

    event.is_set()  标志位是否被设定

    红绿灯模型,假如设置了标志位代表绿灯,清空标志位代表红灯

    #coding=utf-8
    
    import threading
    import time
    
    event = threading.Event()
    
    def lighter():
        n = 1
        while True:
            if n > 10 and n <= 20:
                event.set()
                print u'绿灯亮了{}秒'.format(n - 10)
            elif n > 20:
                event.clear()
                n = 0
            else:
                print u'红灯亮了{}秒'.format(n)
            n += 1
            time.sleep(1)
    
    def car():
        while True:
            if event.is_set():
                print u'行驶中...'
            else:
                print u'红灯亮,车停了'
                event.wait()
                print u'绿灯亮,车继续跑'
            time.sleep(1)
    
    
    tl = threading.Thread(target=lighter)
    tl.start()
    
    tc = threading.Thread(target=car)
    tc.start()

    红灯亮了1秒
    红灯亮,车停了
    红灯亮了2秒
    红灯亮了3秒
    红灯亮了4秒
    红灯亮了5秒
    红灯亮了6秒
    红灯亮了7秒
    红灯亮了8秒
    红灯亮了9秒
    红灯亮了10秒
    绿灯亮了1秒绿灯亮,车继续跑

    行驶中...绿灯亮了2秒

    行驶中...绿灯亮了3秒

    行驶中...绿灯亮了4秒

    绿灯亮了5秒行驶中...

    行驶中...绿灯亮了6秒

    行驶中...绿灯亮了7秒

    行驶中...绿灯亮了8秒

    行驶中...绿灯亮了9秒

    行驶中...绿灯亮了10秒

    行驶中...
    红灯亮了1秒

  • 相关阅读:
    Mapreduce的Job运行流程
    Mapreduce的job提交流程
    Hadoop之hdfs
    Java之垃圾回收机制
    Java中线程死锁问题
    删除数据表重复元素方法
    JAVA
    php篇一 之上传文件
    php篇二 之微信公众号开发
    android + php 后台开发
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/10201110.html
Copyright © 2011-2022 走看看