Python基础――多线程之信号量

匿名 (未验证) 提交于 2019-12-02 22:11:45

信号量可以看成是线程锁的加强版

信号量相当于一个计数器,和RTOS中任务向量表异曲同工,当资源消耗是递减,当资源释放是递增。也就是说acquire消耗资源减一,release释放资源加一。

可以认为信号量代表着资源是否可用。

使用信号量首先要创建BoundedSemaphore类的实例,并通过该类的方法传入信号量的最大值

实例演示了信号对象的创建,获取资源与释放资源:

 # ――创建时间:2019.3.2―― # 多线程信号量 from threading import BoundedSemaphore  MAX = 3 # 创建信号量对象,并设置最大值 semaphore = BoundedSemaphore(MAX) # 输出当前计数器的值 print(semaphore._value) # 获得资源,计数器减一 semaphore.acquire() # 输出当前计数器的值 print(semaphore._value) # 获得资源,计数器减一 semaphore.acquire() # 输出当前计数器的值 print(semaphore._value) # 释放资源,计数器加一 semaphore.release() # 输出当前计数器的值 print(semaphore._value) # 释放资源,计数器加一 semaphore.release() # 输出当前计数器的值 print(semaphore._value)  # 如果再次释放资源,则会抛出异常!

结果:

 3 2 1 2 3

不能再获取资源时,acquire会返回False;不能再次释放资源时,会抛出异常!

文章来源: https://blog.csdn.net/qq_41895747/article/details/88082880
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!