進擊のpython
並發編程——線程理論
前面講的是進程的相關理論部分
從本節開始,就是對線程的相關知識的研究了
本節對線程進行一個定義,知道什么是線程
以及橫向對比進程,知曉兩者的不同點
什么是線程
線程是執行程序的最小單位
舉個例子:
老師讓你讀一本書,那么這個書可以看作是進程,而你讀書的這個過程就是線程
線程就是用來執行程序的,那么就可以這么想
每開一個進程是不是就要執行該進程,而執行程序的最小單位是線程
所以每開一個進程,隨之而來的就是自動開一個線程
進程將資源都聚合起來,然后給線程執行
多線程就是在一個進程里存在多個線程,多個線程共享這個進程里面的資源
就好像班級同學一起讀投影儀上的文章一樣,投影儀上的文章就是進程里面的資源
全班同學就是一個一個的線程,幾乎同時來執行讀書這個‘任務’
線程VS進程
線程和進程的區別,主要體現在以下這六個方面:
1.線程共享創建它的進程的地址空間;進程有自己的地址空間
2.線程可以直接訪問其進程的數據段;進程有自己的父進程數據段副本
3.線程可以直接與其進程的其他線程通信;進程要使用進程間通信與兄弟進程通信
4.新線程很容易創建;新進程需要父進程的重復
5.線程可以對同一進程的線程進行相當大的控制;進程只能對子進程進行控制
6.對主線程的更改(取消、優先級更改等)可能會影響進程的其他線程的行為;
對父進程的更改不會影響子進程
其實總結起來,就兩個關鍵:
1.線程共享進程的數據
2.創建線程開銷遠小於進程