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