Python提供了一種線程安全的機制,稱為變量鎖。變量鎖是一種同步工具,用于在線程訪問共享變量時保持互斥性。在多線程應用程序中,多個線程共享相同的變量,當這些線程同時訪問變量時,可能會出現數據競爭問題。使用變量鎖可以解決這個問題。
import threading # 定義共享變量 count = 0 lock = threading.Lock() # 定義線程類 class MyThread(threading.Thread): def run(self): global count # 獲取變量鎖 lock.acquire() for i in range(100000): count += 1 # 釋放變量鎖 lock.release() # 創建線程 t1 = MyThread() t2 = MyThread() # 啟動線程 t1.start() t2.start() # 等待所有線程執行完畢 t1.join() t2.join() # 輸出結果 print("Count =", count)
在上面的代碼中,我們首先定義了一個共享變量count和一個變量鎖lock。然后創建了兩個線程,每個線程都對count進行100000次累加操作。在每個線程對count進行操作之前,先通過lock.acquire()獲取變量鎖,在操作完成后再通過lock.release()釋放變量鎖。
最后,我們等待所有線程執行完畢,輸出結果。由于我們采用變量鎖的方式控制了對共享變量count的訪問,因此最終輸出的結果是200000,而不是我們預期的少于200000的結果。