【发布时间】:2020-02-26 01:43:53
【问题描述】:
在 Python 文档 here 中,它指出
如果有多个线程被阻塞等待锁被解锁,那么一次只有一个线程能够获取锁的所有权。 这种情况下没有返回值。
但在哪种情况?
我在 IPython 中试验了以下代码:
import time, threading
def func(rlock):
print(rlock.acquire())
for i in range(4):
print(i)
time.sleep(1)
rlock.release()
print('done')
rlock = threading.RLock()
# 2 threads
threading.Thread(target=func, args=[rl]).start()
threading.Thread(target=func, args=[rl]).start()
rlock 释放后一个线程开始运行,然后另一个线程:
rlock.release()
输出
True
0
1
2
3
done
True
0
1
2
3
done
在两个线程中rlock.acquire() 得到了返回值True。
寻找rlock.acqure() 没有返回值(返回无)的示例?
【问题讨论】:
-
嗨 Frozen Flame,我知道这是一个有点老的问题,但您能否检查我的回答并检查它是否符合您的问题,或者您还有任何疑问? :)
标签: python multithreading locking python-multithreading