使用threading.Lock讓多個執行緒只有一個正在執行,最先呼叫acquire()的執行緒獲得執行權,其他執行緒呼叫acquire(),就不會往下執行,需要等待最先呼叫的執行緒,執行release(),其他呼叫acquire()的執行緒,其中一個執行緒才會繼續執行。
執行結果
函式x被lock.acquire()鎖住
函式x解鎖
函式y被lock.acquire()鎖住
x: 0
x: 1
x: 2
x: 3
x: 4
x: 5
函式x使用lock.release()解鎖
函式y解鎖
y: 0
x: 6
x: 7
y: 1
y: 2
x: 8
x: 9
y: 3
y: 4
y: 5
y: 6
y: 7
y: 8
y: 9
函式y使用lock.release()解鎖