阻塞器, 单人阻塞器和多人阻塞器

zblocker的Python项目详细描述


阻塞器, 单人阻塞器和多人阻塞器


单人阻塞器:
一个线程调用lock()会立即阻塞, 直到另一个线程调用unlock()为止, 同一个阻塞器只能阻塞一个线程
测试代码:
if __name__ == '__main__':
print('测试单人阻塞器')


def fun():
for i in range(5):
time.sleep(1)
a.unlock()


import threading
import time

a = BLock()
threading.Thread(target=fun).start()

for i in range(5):
print('开始锁定', i, time.strftime('%H:%M:%S', time.localtime()))
a.lock() # 阻塞
print(' 解除', i, time.strftime('%H:%M:%S', time.localtime()))

print('结束\n\n')


多人阻塞器:
任何线程在调用lock()的时候都会被阻塞, 直到有一个线程调用一次unlock()来解除所有阻塞
测试代码
if __name__ == '__main__':
print('测试多人阻塞器')


def fun1(value):
print('阻塞', value)
a.lock()
print(' 解除', value)


def fun2():
print('--2秒后解除所有阻塞--', time.strftime('%H:%M:%S', time.localtime()))
time.sleep(2)
print('--即将解除所有阻塞--', time.strftime('%H:%M:%S', time.localtime()))
a.unlock()


import threading
import time

a = BLock_more()

for i in range(5):
threading.Thread(target=fun1, args=(i,)).start()
threading.Thread(target=fun2).start()

a.join()
print('结束')


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java程序不断抛出错误。springframework。豆。工厂BeanCreationException弹簧靴   Java中的SQL SELECT语句   java如何在邻接链表中列出链表的所有成员   java为什么需要显式导入springsecurityweb依赖项?   SQLException中的java提取参数   eclipse如何使用使用java在rapidminer中创建的模型   java转换字符串列表日期列表   java是否可以使用Selenium或任何其他工具自动化RDP会话?   Scala/Java解析只有日期部分的字符串   使用AES解密时的java Stringindexoutofboundsexception   java日期类问题:日期对象被设置为我没有设置的对象   java如何修改IllegalArgumentException以包含负值?   sockets Java。net服务器示例不起作用   java每隔这么多字符就有一个空格