中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c#中進程與線程的關系是什么

發布時間:2020-12-23 15:01:27 來源:億速云 閱讀:175 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關c#中進程與線程的關系是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

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

屬性:

  1. 輕型實體。它不擁有系統資源,只是有一點必不可少的、能保證獨立運行的資源。

  2. 獨立調度和分派的基本單位。在多線程OS中,線程是獨立運行的基本單位,因而也是獨立調度和分派的基本單位,但由于線程很輕,故線程的切換非常迅速且開銷小。

  3. 可并發執行。在一個進程中的多個線程之間可以并發執行,甚至允許在一個進程中的所有線程都能并發執行;同樣,不同進程中的線程也能并發執行。

  4. 共享進程資源。在同一個進程中的各個線程都可以共享該進程所擁有的資源,這首先表現在:所有線程都具有相同的地址空間(進程的地址空間),這意味著,線程可以訪問該地址空間中的每一個虛地址;此外,還可以訪問進程所擁有的已打開文件、定時器、信號量機構等。

線程的創建和終止

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

多線程OS中的進程:

  1. 作為系統資源分配的單位。在多線程OS中,仍然是以進程作為系統資源分配的基本單位,在任何一個進程中所擁有的資源包括:受到分別保護的用戶地址空間、用于實現進程間和線程間同步和通信的機制、已打開的文件和已收申請到I/O設備,以及一張由核心進程維護的地址映射表,該表用于實現用戶程序的邏輯地址到其內存物理地址的映射。

  2. 可包括多個線程。通常一個進程都含有多個相對獨立的線程,其數目可多可少,但至少也要有一個線程,由進程為這些線程提供資源及運行環境,使這些線程可并發執行。在OS中的所有線程都只能屬于某個特定的進程。

  3. 進程不是一個可執行的實體。在多線程OS中,是把線程作為獨立運行的基本單位,所以此時的進程已不再是一個可執行的實體。

定義:

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

進程和線程的關系:

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

線程與進程的區別:

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

線程的劃分尺度小于進程,使得多線程程序的并發性高。

另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大的提高了程序運行效率。

線程在執行過程中,每個獨立的線程有一個程序運行的入口,順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,有應用程序提供多個線程執行控制。

從邏輯角度看,多線程的意義子啊與一個應用程序中,有多個執行部分可以同時執行。但操作系統并沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。

看完上述內容,你們對c#中進程與線程的關系是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云龙县| 法库县| 珠海市| 宁都县| 新闻| 辉南县| 盘锦市| 左云县| 香港| 准格尔旗| 莎车县| 康定县| 孟州市| 多伦县| 广南县| 辉县市| 清河县| 什邡市| 杭州市| 同仁县| 广灵县| 紫阳县| 新沂市| 手游| 鹰潭市| 会泽县| 桓仁| 达拉特旗| 涟水县| 光山县| 宜昌市| 聊城市| 临澧县| 古田县| 南陵县| 宝山区| 门头沟区| 扎赉特旗| 秦安县| 夏邑县| 阳城县|