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執行緒
- Python 之 threading(多執行緒)用法教程Pythonthread執行緒
- python之 threading(多執行緒)模組Pythonthread執行緒
- python中的socket+threading多執行緒Pythonthread執行緒
- 多執行緒_鎖執行緒
- Python多執行緒之_thread與threading模組Python執行緒thread
- Java多執行緒(2)執行緒鎖Java執行緒
- iOS多執行緒安全-13種執行緒鎖?iOS執行緒
- 多執行緒(2)-執行緒同步互斥鎖Mutex執行緒Mutex
- python threading 執行緒原理實驗Pythonthread執行緒
- Java多執行緒(五):死鎖Java執行緒
- java多執行緒(5)死鎖Java執行緒
- Python多執行緒與GIL鎖Python執行緒
- Java多執行緒中執行緒安全與鎖問題Java執行緒
- JAVA多執行緒詳解(3)執行緒同步和鎖Java執行緒
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- Java多執行緒 -- 公平鎖和非公平鎖Java執行緒
- 多執行緒(二)、內建鎖 synchronized執行緒synchronized
- 多執行緒之8鎖問題執行緒
- JAVA多執行緒與鎖機制Java執行緒
- 畫江湖之 PHP 多執行緒開發 【執行緒安全 互斥鎖】PHP執行緒
- 畫江湖之 PHP 多執行緒開發 [執行緒安全 互斥鎖]PHP執行緒
- JavaSE_多執行緒入門 執行緒安全 死鎖 狀態 通訊 執行緒池Java執行緒
- 多執行緒和多執行緒同步執行緒
- 多執行緒與併發----讀寫鎖執行緒
- Linux多執行緒的使用一:互斥鎖Linux執行緒
- 多執行緒--執行緒管理執行緒
- 執行緒與多執行緒執行緒
- 多執行緒【執行緒池】執行緒
- 分散式鎖 (資源在程式而非執行緒之間共享)分散式執行緒
- 執行緒鎖(四)執行緒
- Java多執行緒程式設計—鎖優化Java執行緒程式設計優化
- 多執行緒與併發-----Lock鎖技術執行緒
- 多執行緒之死鎖就是這麼簡單執行緒
- 多執行緒併發程式設計“鎖”事執行緒程式設計
- Java多執行緒-鎖的區別與使用Java執行緒
- Java多執行緒-執行緒中止Java執行緒
- 多執行緒之初識執行緒執行緒