zoukankan      html  css  js  c++  java
  • 7.3.8.1

    一 信号量

    信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房一个们,每次只能出去一个人,那么信号量就相当于一群路人去争取合租房的多个们出去,合租房有多少个门,这意味着同一时间可以有多个人出去,但合租房的出去的门是一定的,这们多少是信号量。

    from threading import Thread,Semaphore
    import threading
    import time
    
    def func():
        sm.acquire()
        print('%s get sm' %threading.current_thread().getName())
        time.sleep(3)
        sm.release()
    
    if __name__ == '__main__':
        sm=Semaphore(5)  #定义信号量大小,同时有5人抢占
        for i in range(23):
            t=Thread(target=func)
            t.start()
    信号量
    Thread-1 get sm
    Thread-2 get sm
    Thread-3 get sm
    Thread-4 get sm
    Thread-5 get sm
    
    
    
    Thread-6 get sm
    Thread-7 get sm
    Thread-8 get sm
    Thread-9 get sm
    Thread-10 get sm
    
    
    Thread-11 get sm
    Thread-12 get sm
    Thread-13 get sm
    Thread-14 get sm
    Thread-15 get sm
    
    
    Thread-16 get sm
    Thread-17 get sm
    Thread-18 get sm
    Thread-19 get sm
    Thread-20 get sm
    
    
    Thread-22 get sm
    Thread-23 get sm
    Thread-21 get sm
    运行结果(暂停时候,我加了换行符)
  • 相关阅读:
    小端字节序与大端字节序
    V8引擎的垃圾回收策略
    TTL 和 DNS TTL 的区别
    详解 undefined 与 null 的区别
    Node.js 事件循环机制
    requestAnimationFrame 知多少?
    Web前端知识体系精简
    Vue.js 和 MVVM 小细节
    使用 Node.js 搭建 Web 服务器
    H5单页面手势滑屏切换原理
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8523438.html
Copyright © 2011-2022 走看看