ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

065 解释什么是信号量,以及如何使用信号量

2022-04-20 21:00:32  阅读:180  来源: 互联网

标签:解释 acquire 065 ._ value 信号量 semaphore print


信号量:最古老的同步原语之一,是一个计数器。

当资源释放时,计数器就会递增,当申请资源时,计数器就会递减

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

 

from threading import BoundedSemaphore
MAX = 3

semaphore = BoundedSemaphore(MAX)

print(semaphore._value)

semaphore.acquire()
print(semaphore._value)

semaphore.acquire()
print(semaphore._value)

semaphore.acquire()
print(semaphore._value)

# blocking=True时,默认。value为0,没有资源可以申请,再次调用方法会被阻塞
# print(semaphore.acquire(blocking=True))
# print(semaphore._value)

print(semaphore.acquire(blocking=False))
print(semaphore._value)

semaphore.release()
print(semaphore._value)

semaphore.release()
print(semaphore._value)

semaphore.release()
print(semaphore._value)

# 若没有资源被占用,调用释放,会抛出异常
# semaphore.release()
# print(semaphore._value)
# raise ValueError("Semaphore released too many times")
# ValueError: Semaphore released too many times

  

3
2
1
0
False
0
1
2
3

标签:解释,acquire,065,._,value,信号量,semaphore,print
来源: https://www.cnblogs.com/yuminhu/p/16058349.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有