BAIDU內部資料!python多線程值得收藏(一)

編程語言 Python 信息時代我引潮流 2017-05-22

一、線程基礎

1.1 線程狀態

建立、就緒、運行、阻塞、結束

BAIDU內部資料!python多線程值得收藏(一)

1.2 線程同步(鎖)

多線程的優勢在於可以同時運行多個任務(至少感覺起來是這樣)。但是當線程需要共享數據時,可能存在數據不同步的問題。考慮這樣一種情況:一個列表裡所有元素都是0,線程"set"從後向前把所有元素改成1,而線程"print"負責從前往後讀取列表並打印。那麼,可能線程"set"開始改的時候,線程"print"便來打印列表了,輸出就成了一半0一半1,這就是數據的不同步。為了避免這種情況,引入了鎖的概念。

鎖有兩種狀態——鎖定和未鎖定。每當一個線程比如"set"要訪問共享數據時,必須先獲得鎖定;如果已經有別的線程比如"print"獲得鎖定了,那麼就讓線程"set"暫停,也就是同步阻塞;等到線程"print"訪問完畢,釋放鎖以後,再讓線程"set"繼續。經過這樣的處理,打印列表時要麼全部輸出0,要麼全部輸出1,不會再出現一半0一半1的尷尬場面。

BAIDU內部資料!python多線程值得收藏(一)

未完待續!

由於大家都是手機看考慮到觀看感受,So 1.3 1.4 內容詳見下一篇連載,請關注小編帳號,歡迎評論收藏轉發。

相關推薦

推薦中...