Python是一種高級編程語言,它支持多線程編程。在多線程編程中,線程鎖是一個非常重要的概念,以確保同一時間只有一個線程可以訪問共享資源。下面介紹一個python線程鎖實例。
import threading counter = 0 def worker(lock): global counter lock.acquire() try: for i in range(100000): counter += 1 finally: lock.release() def main(): lock = threading.Lock() threads = [] for i in range(10): t = threading.Thread(target=worker, args=(lock,)) threads.append(t) t.start() for t in threads: t.join() print(counter) if __name__ == "__main__": main()
在這個例子中,我們定義了一個全局變量`counter`并初始化為0。然后我們定義了一個函數`worker()`,它使用線程鎖確保每個線程都可以安全地訪問共享資源。在`main()`函數中,我們使用`threading.Lock()`創建一個鎖對象,并且創建10個線程,每個線程調用`worker()`函數,并傳遞鎖對象為參數。最后,我們等待所有線程完成,打印`counter`的值。
當多個線程訪問同一個全局變量時,會發生數據競爭問題。這意味著多個線程可能會同時寫入該變量,導致結果不可預測。為了避免這種情況,我們使用線程鎖確保同一時間只有一個線程可以訪問該變量。當一個線程獲取鎖時,其他線程將被阻塞,直到該線程釋放鎖為止。
下一篇vue前后端評論