一、進(jìn)程與線程

1.進(jìn)程

我們電腦的應(yīng)用程序,都是進(jìn)程,假設(shè)我們用的電腦是單核的,cpu同時只能執(zhí)行一個進(jìn)程。當(dāng)程序出于I/O阻塞的時候,CPU如果和程序一起等待,那就太浪費了,cpu會去執(zhí)行其他的程序,此時就涉及到切換,切換前要保存上一個程序運行的狀態(tài),才能恢復(fù),所以就需要有個東西來記錄這個東西,就可以引出進(jìn)程的概念了。

進(jìn)程就是一個程序在一個數(shù)據(jù)集上的一次動態(tài)執(zhí)行過程。進(jìn)程由程序,數(shù)據(jù)集,進(jìn)程控制塊三部分組成。程序用來描述進(jìn)程哪些功能以及如何完成;數(shù)據(jù)集是程序執(zhí)行過程中所使用的資源;進(jìn)程控制塊用來保存程序運行的狀態(tài)

2.線程

一個進(jìn)程中可以開多個線程,為什么要有進(jìn)程,而不做成線程呢?因為一個程序中,線程共享一套數(shù)據(jù),如果都做成進(jìn)程,每個進(jìn)程獨占一塊內(nèi)存,那這套數(shù)據(jù)就要復(fù)制好幾份給每個程序,不合理,所以有了線程。

線程又叫輕量級進(jìn)程,是一個基本的cpu執(zhí)行單元,也是程序執(zhí)行過程中的最小單元。一個進(jìn)程最少也會有一個主線程,在主線程中通過threading模塊,在開子線程

3.進(jìn)程線程的關(guān)系

(1)一個線程只能屬于一個進(jìn)程,而一個進(jìn)程可以有多個線程,但至少有一個線程

(2)資源分配給進(jìn)程,進(jìn)程是程序的主體,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式