Python线程专题5:信号量与有边界的信号量

发布时间:2019-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Python线程专题5:信号量与有边界的信号量脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
上一篇文章Python线程专题4:Timer对象、Lock对象、Rlock对象
下一篇文章:Python线程专题6:事件

信号量与有边界的信号量

信号量是一个基于计数器的同步原语,每次调用acquire()方法时,此计数器减1,每次调用release()方法时此计数器加1.。如果计数器为0,acquire()方法将会阻塞,直到有其他线程调用release()方法为止。

信号量

语法:
s=SEMqphore(value)
创建一个新的信号量。value是计数器的初始值。如果省略value,将默认设置为1
常用方法
s.acquire(blocking):获取信号量。如果内部计数器大于0,此方法将把它的值减1。
然后立即返回。如果它的值为0,此方法将阻塞,直到另一个线程调用release()方法为止。
blocking参数的行为与Lock和RLock对象中描述的相同。

s.release():通过将内部计数器的值加1来释放一个信号量。
如果计数器为0,而且另一个线程正在等待,该线程讲被唤醒。
如果有多个线程正在等待,只能从它的acquire()的调用中返回一个,并且顺序不确定。

有边界的信号量

语法:
bs=Boundedsemaphore(value)
创建一个新的有边界信号量。value是计数器的初始值,如果忽略,将默认为1.

信号量与有边界的信号量的区别

BoundedSemaphore的工作方式与Semaphore完全相同,但release()操作的次数不能超过acquire()的操作次数。

信号量与互斥锁的微妙差别

信号量可用于发送信号。例如,可以从不同线程调用acquire()和release()方法,以便在生产者和消费者线程之间进行通信。

脚本宝典总结

以上是脚本宝典为你收集整理的Python线程专题5:信号量与有边界的信号量全部内容,希望文章能够帮你解决Python线程专题5:信号量与有边界的信号量所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。