所謂進(jìn)程其實(shí)就是資源分配的基本單位,線程是cpu調(diào)度和分派的基本單位,線程屬于進(jìn)程的一部分,一個(gè)進(jìn)程可以有多個(gè)線程,線程可看做輕量級(jí)的進(jìn)程,兩者有什么聯(lián)系,且聽(tīng)聚名企服的相關(guān)介紹~
一、關(guān)于線程、進(jìn)程有什么關(guān)系的詳情介紹
1、進(jìn)程最少有一個(gè)線程,一個(gè)線程只能在一個(gè)進(jìn)程的地址空間內(nèi)活動(dòng);
2、資源分配進(jìn)程,同一個(gè)進(jìn)程的所有線程共享該進(jìn)程所有資源;
3、CPU分配給線程,即真正在處理器運(yùn)行的是線程;
4、線程在執(zhí)行過(guò)程中需要協(xié)作同步,不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步;
二、進(jìn)程之間可以共享嗎
進(jìn)程擁有這許多共性的同時(shí),還擁有自己的個(gè)性。有了這些個(gè)性,線程才能實(shí)現(xiàn)并發(fā)性。這些個(gè)性包括:
1、線程ID,每個(gè)線程都有自己的線程ID,這個(gè)ID在本進(jìn)程中是唯一的。進(jìn)程用此來(lái)標(biāo)識(shí)線程。
2、寄存器組的值,由于線程間是并發(fā)運(yùn)行的,每個(gè)線程有自己不同的運(yùn)行線索,當(dāng)從一個(gè)線程切換到另一個(gè)線程上時(shí),必須將原有的線程的寄存器集合的狀態(tài)保存,以便將來(lái)該線程在被重新切換到時(shí)能得以恢復(fù)。
3、線程的堆棧,堆棧是保證線程獨(dú)立運(yùn)行所必須的。
線程函數(shù)可以調(diào)用函數(shù),而被調(diào)用函數(shù)中又是可以層層嵌套的,所以線程必須擁有自己的函數(shù)堆棧,使得函數(shù)調(diào)用可以正常執(zhí)行,不受其他線程的影響。
4、線程的信號(hào)屏蔽碼,由于每個(gè)線程所感興趣的信號(hào)不同,所以線程的信號(hào)屏蔽碼應(yīng)該由線程自己管理。但所有的線程都共享同樣的信號(hào)處理器。
5、線程的優(yōu)先級(jí),由于線程需要像進(jìn)程那樣能夠被調(diào)度,那么就必須要有可供調(diào)度使用的參數(shù),這個(gè)參數(shù)就是線程的優(yōu)先級(jí)。
以上就是什么是線程,什么是進(jìn)程,兩者有什么關(guān)系?的相關(guān)內(nèi)容。