threading多執行緒資源加鎖
threading多執行緒資源加鎖控制
# 執行緒.
import threading
def incr(n):
global a
for i in range(n):
try:
lock.acquire() # 加鎖相當於單執行緒了, 所以加鎖的位置應該少;(py自帶GIL鎖).
a += 1
finally:
lock.release()
def decr(n):
global a
for i in range(n):
try:
lock.acquire()
a -= 1
finally:
lock.release()
if __name__ == "__main__":
lock = threading.Lock() # create Lock obj.
a = 0
n = 1000000 # 不加Lock, 如果這裡n的值過大, 那麼計算出的來的a的值就不是0了.
t1 = threading.Thread(target=incr, args=(n,))
t2 = threading.Thread(target=decr, args=(n,))
t1.start()
t2.start()
t1.join()
t2.join()
print(a) # 多執行緒使用共享資源可能出現異常.使用加鎖來解決, Lock
相關文章
- 【莫煩】Threading 多執行緒教程thread執行緒
- 多執行緒_鎖執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- python之 threading(多執行緒)模組Pythonthread執行緒
- threading 多執行緒控制和處理thread執行緒
- Python 之 threading(多執行緒)用法教程Pythonthread執行緒
- iOS多執行緒安全-13種執行緒鎖?iOS執行緒
- 多執行緒(2)-執行緒同步互斥鎖Mutex執行緒Mutex
- java多執行緒–同步鎖Java執行緒
- Java多執行緒-無鎖Java執行緒
- python中的socket+threading多執行緒Pythonthread執行緒
- Python 多執行緒 threading和multiprocessing模組Python執行緒thread
- LINUX多執行緒讀寫同一個檔案 加鎖Linux執行緒
- Java多執行緒(五):死鎖Java執行緒
- java多執行緒(5)死鎖Java執行緒
- Python 多執行緒和鎖Python執行緒
- Java多執行緒7:死鎖Java執行緒
- 多執行緒鎖的問題執行緒
- Python多執行緒之_thread與threading模組Python執行緒thread
- uwsgi+django+gmail+threading多執行緒發郵件DjangoAIthread執行緒
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- JAVA多執行緒詳解(3)執行緒同步和鎖Java執行緒
- 為什麼多執行緒讀寫shared_ptr需要加鎖執行緒
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- Java多執行緒 -- 公平鎖和非公平鎖Java執行緒
- 多執行緒之8鎖問題執行緒
- 多執行緒(二)、內建鎖 synchronized執行緒synchronized
- JAVA多執行緒與鎖機制Java執行緒
- Python多執行緒與GIL鎖Python執行緒
- 畫江湖之 PHP 多執行緒開發 【執行緒安全 互斥鎖】PHP執行緒
- 畫江湖之 PHP 多執行緒開發 [執行緒安全 互斥鎖]PHP執行緒
- Java多執行緒/併發06、執行緒鎖Lock與ReadWriteLockJava執行緒
- 執行緒同步及執行緒鎖執行緒
- Python模組學習:threading 多執行緒控制和處理Pythonthread執行緒
- JavaSE_多執行緒入門 執行緒安全 死鎖 狀態 通訊 執行緒池Java執行緒
- 多執行緒和多執行緒同步執行緒
- 多執行緒與併發----讀寫鎖執行緒
- JavaThread多執行緒同步、鎖、通訊Javathread執行緒