在Python中,可以使用互斥鎖(Lock)來解決互斥訪問問題。互斥鎖是一種線程同步的機制,它可以保證在同一時刻只有一個線程能夠訪問共享資源。
下面是一個使用互斥鎖解決互斥訪問問題的示例代碼:
import threading
# 創建一個互斥鎖對象
lock = threading.Lock()
# 共享資源
shared_data = 0
def worker():
global shared_data
# 獲取互斥鎖
lock.acquire()
try:
# 對共享資源進行操作
shared_data += 1
finally:
# 釋放互斥鎖
lock.release()
# 創建多個線程并啟動
threads = []
for _ in range(10):
t = threading.Thread(target=worker)
t.start()
threads.append(t)
# 等待所有線程執行完成
for t in threads:
t.join()
# 輸出共享資源的結果
print(shared_data)
在上面的代碼中,我們首先創建了一個互斥鎖對象(lock = threading.Lock()
)。然后,在每個線程中,我們先調用lock.acquire()
方法獲取互斥鎖,然后對共享資源進行操作,最后再調用lock.release()
方法釋放互斥鎖。
通過使用互斥鎖,可以保證在同一時刻只有一個線程能夠訪問共享資源,從而避免了多個線程之間的競爭條件,確保了共享資源的正確性。