欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# 進(jìn)程和線程的區(qū)別與聯(lián)系

 更新時間:2020年12月22日 16:40:16   作者:柳絮  
這篇文章主要介紹了c# 進(jìn)程和線程的區(qū)別與聯(lián)系,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

引入線程是為了減少程序在并發(fā)執(zhí)行時所付出的時空開銷。

屬性:

  1. 輕型實(shí)體。它不擁有系統(tǒng)資源,只是有一點(diǎn)必不可少的、能保證獨(dú)立運(yùn)行的資源。
  2. 獨(dú)立調(diào)度和分派的基本單位。在多線程OS中,線程是獨(dú)立運(yùn)行的基本單位,因而也是獨(dú)立調(diào)度和分派的基本單位,但由于線程很輕,故線程的切換非常迅速且開銷小。
  3. 可并發(fā)執(zhí)行。在一個進(jìn)程中的多個線程之間可以并發(fā)執(zhí)行,甚至允許在一個進(jìn)程中的所有線程都能并發(fā)執(zhí)行;同樣,不同進(jìn)程中的線程也能并發(fā)執(zhí)行。
  4. 共享進(jìn)程資源。在同一個進(jìn)程中的各個線程都可以共享該進(jìn)程所擁有的資源,這首先表現(xiàn)在:所有線程都具有相同的地址空間(進(jìn)程的地址空間),這意味著,線程可以訪問該地址空間中的每一個虛地址;此外,還可以訪問進(jìn)程所擁有的已打開文件、定時器、信號量機(jī)構(gòu)等。

線程的創(chuàng)建和終止

雖然已被終止但尚未釋放資源的線程,仍可以被需要他的線程所調(diào)用,以使被終止的線程重新恢復(fù)運(yùn)行。為此,調(diào)用者線程須調(diào)用一條被稱為“等待線程終止”的連接命令,來與該線程重新連接,如果在一個調(diào)用者線程調(diào)用"等待線程終止"的連接命令,試圖與指定線程相連接時,若指定線程尚未被終止,則調(diào)用連接命令的線程將會阻塞,直至指定線程被終止后,才能實(shí)現(xiàn)它與調(diào)用者線程的連接并繼續(xù)執(zhí)行,若指定線程已被終止,則調(diào)用線程不會被阻塞而是繼續(xù)執(zhí)行。

多線程OS中的進(jìn)程:

  1. 作為系統(tǒng)資源分配的單位。在多線程OS中,仍然是以進(jìn)程作為系統(tǒng)資源分配的基本單位,在任何一個進(jìn)程中所擁有的資源包括:受到分別保護(hù)的用戶地址空間、用于實(shí)現(xiàn)進(jìn)程間和線程間同步和通信的機(jī)制、已打開的文件和已收申請到I/O設(shè)備,以及一張由核心進(jìn)程維護(hù)的地址映射表,該表用于實(shí)現(xiàn)用戶程序的邏輯地址到其內(nèi)存物理地址的映射。
  2. 可包括多個線程。通常一個進(jìn)程都含有多個相對獨(dú)立的線程,其數(shù)目可多可少,但至少也要有一個線程,由進(jìn)程為這些線程提供資源及運(yùn)行環(huán)境,使這些線程可并發(fā)執(zhí)行。在OS中的所有線程都只能屬于某個特定的進(jìn)程。
  3. 進(jìn)程不是一個可執(zhí)行的實(shí)體。在多線程OS中,是把線程作為獨(dú)立運(yùn)行的基本單位,所以此時的進(jìn)程已不再是一個可執(zhí)行的實(shí)體。

定義:

一、進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運(yùn)行活動,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨(dú)立單位。
二、線程是進(jìn)程的一個實(shí)體,是CPU調(diào)度和分派的基本單位,他是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位,線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),一個線程可以創(chuàng)建和撤銷另一個線程;

進(jìn)程和線程的關(guān)系:

(1)一個線程只能屬于一個進(jìn)程,而一個進(jìn)程可以有多個線程,但至少有一個線程。
(2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。
(3)線程在執(zhí)行過程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步。
(4)處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程。
(5)線程是指進(jìn)程內(nèi)的一個執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體。

線程與進(jìn)程的區(qū)別:

(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進(jìn)程作為擁有資源的基本單位。
(2)并發(fā)性:不僅進(jìn)程之間可以并發(fā)執(zhí)行,同一個進(jìn)程的多個線程之間也可以并發(fā)執(zhí)行。
(3)擁有資源:進(jìn)程是擁有資源的一個獨(dú)立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進(jìn)程的資源。
(4)系統(tǒng)開銷:在創(chuàng)建或撤銷進(jìn)程的時候,由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的明顯大于創(chuàng)建或撤銷線程時的開銷。但進(jìn)程有獨(dú)立的地址空間,進(jìn)程崩潰后,在保護(hù)模式下不會對其他的進(jìn)程產(chǎn)生影響,而線程只是一個進(jìn)程中的不同的執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨(dú)的地址空間,一個線程死掉就等于整個進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯,但是在進(jìn)程切換時,耗費(fèi)的資源較大,效率要差些。

線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。

另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大的提高了程序運(yùn)行效率。

線程在執(zhí)行過程中,每個獨(dú)立的線程有一個程序運(yùn)行的入口,順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,有應(yīng)用程序提供多個線程執(zhí)行控制。

從邏輯角度看,多線程的意義子啊與一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。

以上就是c# 進(jìn)程和線程的區(qū)別與聯(lián)系的詳細(xì)內(nèi)容,更多關(guān)于c# 進(jìn)程和線程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#表達(dá)式和運(yùn)算符詳細(xì)解析

    C#表達(dá)式和運(yùn)算符詳細(xì)解析

    這篇文章主要介紹了C#表達(dá)式和運(yùn)算符詳細(xì)解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • C#的TimeSpan案例詳解

    C#的TimeSpan案例詳解

    這篇文章主要介紹了C#的TimeSpan案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C#.NET學(xué)習(xí)筆記5 C#中的條件編譯

    C#.NET學(xué)習(xí)筆記5 C#中的條件編譯

    條件編譯是C#比Java多出的東西,但我跟前輩請教后,他們都說條件編譯在實(shí)際的項(xiàng)目開發(fā)中不怎么使用.鑒于是新內(nèi)容,我還是做做筆記,理解一下好了
    2012-11-11
  • C#實(shí)現(xiàn)SSE(Server-Sent Events)服務(wù)端和客戶端的示例代碼

    C#實(shí)現(xiàn)SSE(Server-Sent Events)服務(wù)端和客戶端的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)SSE(Server-Sent Events)服務(wù)端和客戶端的相關(guān)知識,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下
    2024-03-03
  • c#配置文件中自定義塊節(jié)點(diǎn)的方法

    c#配置文件中自定義塊節(jié)點(diǎn)的方法

    在.netcore中我們非常方便獲取配置文件節(jié)點(diǎn)參數(shù),但是在非.netcore下一般 我們是使用中方法,本文我們將給大家詳細(xì)介紹c#配置文件中自定義塊節(jié)點(diǎn)的方法,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • C#文件操作類分享

    C#文件操作類分享

    這篇文章主要為大家分享了C#文件操作類的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 基于C#實(shí)現(xiàn)俄羅斯方塊游戲

    基于C#實(shí)現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了基于C#實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法

    C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法,涉及C#針對注冊表的讀取與監(jiān)控技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-08-08
  • C#實(shí)現(xiàn)Nginx平滑加權(quán)輪詢算法

    C#實(shí)現(xiàn)Nginx平滑加權(quán)輪詢算法

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)Nginx平滑加權(quán)輪詢算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • C# Socket編程實(shí)現(xiàn)簡單的局域網(wǎng)聊天器的示例代碼

    C# Socket編程實(shí)現(xiàn)簡單的局域網(wǎng)聊天器的示例代碼

    這篇文章主要介紹了C# Socket編程實(shí)現(xiàn)簡單的局域網(wǎng)聊天器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評論