0
我有一个多线程使用的函数。由于其性质,此功能应该只能一次调用一次。多个线程在同一时间调用该函数可能会很糟糕。一次只能由一个线程调用的方法
如果函数正在被线程使用,其他线程就不得不等待它自由。
我的背景不是编码,所以我不确定,但我相信这在行话中被称为“锁定”?我尝试了谷歌搜索,但没有找到一个Python3的简单例子。
一个简化的情况:
def critical_function():
# How do I "lock" this function?
print('critical operation that should only be run once at a time')
def threaded_function():
while True:
# doing stuff and then
critical_function()
for i in range(0, 10):
threading.Thread(target=threaded_function).start()
所以你要当第二个线程试图调用该函数发生了什么?它应该抛出一个错误?它是否应该等待第一个线程完成? –
@Rawing - 我的问题的第一段的最后一行'如果函数正在被线程使用,其他线程就不得不等待它被释放。'我将把它放在自己的路线上以使它更清晰。 – Juicy
看到这个,http://effbot.org/zone/thread-synchronization.htm – Sush