zoukankan      html  css  js  c++  java
  • Semaphore(信号量)

    Semaphore(信号量)

    互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去。

    互斥锁只有1把锁,信号量有多把锁。

    import threading, time
    
    
    def run(n):
        semaphore.acquire()#信号量获取
        time.sleep(1)
        print("run the thread: %s
    " % n)
        semaphore.release()#信号量释放
    
    
    if __name__ == '__main__':
    
        semaphore = threading.BoundedSemaphore(3)  # 声明信号量:最多允许3个线程同时运行
        for i in range(20):
            t = threading.Thread(target=run, args=(i,))
            t.start()
    
    while threading.active_count() != 1:
        pass  # print threading.active_count()
    else:
        print('----all threads done---')
    #从运行结果的呈现可以看出,3个3个的执行,一次执行<=3个。
    

      

  • 相关阅读:
    洛谷 PT2 First Step (ファーストステップ)
    Mask-D、绮梦与空谷幽兰
    僕らの手には何もないけど、
    魔都蹭课、观光、酱油记
    竞赛计划
    糖果
    点名
    数字对
    字符串哈希
    负环
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9367157.html
Copyright © 2011-2022 走看看