課程內(nèi)容
Python并發(fā)編程高級課程--線程
什么是線程?
上節(jié)課中,我們降到了進程,知道了每創(chuàng)建一個進程,都需要系統(tǒng)分配CPU、內(nèi)存、磁盤等資源。而系統(tǒng)中不止一個進程。在進程和進程之間切換的時候,系統(tǒng)需要記錄之前進程的執(zhí)行狀態(tài)信息,以便下次執(zhí)行時調(diào)用。由于在早期的電腦中,進程的創(chuàng)建、切換、銷毀存在較大的開銷,現(xiàn)在的電腦都引入了一種能獨立運行的基本單位-線程。 線程遠比進程輕量,只占用較少的系統(tǒng)資源,自線程被引入以后,線程成為系統(tǒng)進行調(diào)度和執(zhí)行的最小單位。
線程、進程、操作系統(tǒng)的基本關(guān)系?
進程是操作系統(tǒng)進行資源分配的基本單位,進程運行于系統(tǒng)中,以這樣的角度來看,可將操作系統(tǒng)理解為一個包含各種進程的容器。進程運行在操作系統(tǒng)這個容器里面,占用著操作系統(tǒng)的各種資源:CPU,內(nèi)存,磁盤等。
而線程是運行在進程內(nèi)部的執(zhí)行實體,一個線程對應(yīng)一個單一順序的控制流,從這一個角度來看,進程則是線程的容器。在支持多線程的操作系統(tǒng)中,一個進程內(nèi)部可以并發(fā)執(zhí)行多個線程。
線程運行在進程這個容器里面,共享著進程內(nèi)部的資源,這表現(xiàn)為:所有線程共享進程的地址空間,打開的文件等。進程中的多個線程之間,可以并發(fā)地執(zhí)行,線程的執(zhí)行也是由操作系統(tǒng)進行調(diào)度的,系統(tǒng)會根據(jù)實際情況,將線程指定給特定的CPU核心,以此進行并發(fā)計算。

- 上一篇
Python并發(fā)編程高級課程--進程間的通信和同步
進程間的通信:和人類社會一樣,每個進程在執(zhí)行過程中也需要爭奪更多的系統(tǒng)資源來執(zhí)行自身程序,所以他們之間也需要通信,最常見的通信就是文件,共享內(nèi)存,信號,套接字等。進程之間的通信,本質(zhì)是數(shù)據(jù)傳輸。進程間的同步:如果系統(tǒng)中只存在一個進程,或系統(tǒng)中的進程完全孤立
- 下一篇
Python并發(fā)編程高級課程--線程的同步和通信
線程通信:之前的課程中我們學過進程之間的通信,線程之間的通信有所不同,線程之間的通信是通過全局對象來進行通信的。舉例說明:進程中的所有線程共享進程的地址空間,可以定義一個全局變量,在各個不同進程中,根據(jù)全局變量的不同狀態(tài),來執(zhí)行不同的進程,類似于條件選擇語