zoukankan      html  css  js  c++  java
  • 事件

    """
        事件   911 刘强东事件   火烧圆明园
    
    
        事件是一个通知信息, 表示什么时间发生了什么事情
    
        用于线程间通讯
        线程间 本来就是数据共享的  也就是说 即使没有事件这个东西 也是没问题的
    
        线程之间,执行流程是完全独立的,一些时候可能需要知道另一个线程发生了什么 然后采取一些行动
        这时候就可以使用事件来简化代码
    
        事件其实就是帮你维护了一个bool值
        在bool为True之前  wait函数将一直阻塞,这样一来就避免了不断的询问对方的状态
    
        假设 有两条线程 一个用于开启服务器  一个用于连接服务器
        连接服务器一定要保证 服务器已经启动成功了,服务器启动需要花费一些时间,
    
    """
    import  time,random
    from threading import Thread,Event
    # 使用事件
    # 一个事件
    boot = Event()
    
    def boot_server():
        print("正在启动服务器.......")
        time.sleep(random.randint(2,5))
        print("服务器启动成功.......")
        boot.set()
    
    
    def connect_server():
        print("开始尝试连接.....")
        boot.wait() # 是一个阻塞函数  会一直等到set()函数被调用
        print("连接服务器成功!")
    
    
    t1 = Thread(target=boot_server)
    t1.start()
    
    t2 = Thread(target=connect_server)
    t2.start()
    
    
    
    # 不使用事件
    # 默认未启动
    # is_boot = False
    #
    # def boot_server():
    #     global is_boot
    #     print("正在启动服务器.......")
    #     time.sleep(random.randint(2,5))
    #     print("服务器启动成功.......")
    #     # 修改状态为True
    #     is_boot = True
    #
    #
    # def connect_server():
    #     while True:
    #         if is_boot:
    #             print("连接服务器成功!")
    #             break
    #         else:
    #             print("连接失败 服务器未启动....")
    #             time.sleep(1)
    #
    # t1 = Thread(target=boot_server)
    # t1.start()
    #
    # t2 = Thread(target=connect_server)
    # t2.start()
    #
  • 相关阅读:
    Log4Qt 使用(一)
    “定义为指针,外部以数组形式引用”和“定义为数组,外部以指针形式引用”会发生什么?
    gcc总结【基本用法】【选项】【动静态库】(转)
    C++沉思录之三——设计容器类
    C++沉思录之二——虚函数使用的时机
    何时需要自定义复制构造函数?
    C++沉思录之一
    搜索百度云里面的内容技巧
    Qt 之容器内的控件全屏
    python的代码检查
  • 原文地址:https://www.cnblogs.com/Hale-wang/p/10512078.html
Copyright © 2011-2022 走看看