66 - 请解释什么是信号量,以及如何使用信号量

举报
ruochen 发表于 2021/03/26 01:43:35 2021/03/26
【摘要】 描述一下什么是信号量,如何使用信号量,请举例说明 信号量;最古老的同步原语之一,是一个计数器,当资源释放时,计数器就会递增,当申请资源时,计数器就会递减 from threading import BoundedSemaphore MAX = 3 semaphore = BoundedSemaphore(MAX) print(semaphore._value) ...

描述一下什么是信号量,如何使用信号量,请举例说明

  • 信号量;最古老的同步原语之一,是一个计数器,
  • 当资源释放时,计数器就会递增,当申请资源时,计数器就会递减
from threading import BoundedSemaphore
MAX = 3

semaphore = BoundedSemaphore(MAX)
print(semaphore._value)

semaphore.acquire()
print(semaphore._value)

semaphore.acquire()
print(semaphore._value)
print(semaphore.acquire())

print(semaphore._value)

# 如果没有资源可以申请(_value 的值是0), 再次调用acquire方法,会被阻塞
print(semaphore.acquire(False))
print(semaphore._value)

semaphore.release() # 第一次释放资源
print(semaphore._value)

semaphore.release() # 第二次释放资源
print(semaphore._value)

semaphore.release() # 第三次释放资源
print(semaphore._value)

# 无资源被占用,抛出异常
# semaphore.release() # 第四次释放资源
# print(semaphore._value)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
3
2
1
True
0
False
0
1
2
3

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

67 - 用多线程从网上下载图像文件

文章来源: ruochen.blog.csdn.net,作者:若尘,版权归原作者所有,如需转载,请联系作者。

原文链接:ruochen.blog.csdn.net/article/details/104851659

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。