新聞中心
進(jìn)程和線程這兩個話題是程序員繞不開的,操作系統(tǒng)提供的這兩個抽象概念實(shí)在是太重要了。

寧遠(yuǎn)網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
關(guān)于進(jìn)程和線程有一個極其經(jīng)典的問題,那就是進(jìn)程和線程的區(qū)別是什么?
關(guān)于這個問題,有的同學(xué)可能已經(jīng)背得滾瓜爛熟了:“進(jìn)程是操作系統(tǒng)分配資源的單位,線程是調(diào)度的基本單位,線程之間共享進(jìn)程資源”。
可是你真的理解了上面最后一句話嗎?到底線程之間共享了哪些進(jìn)程資源,共享資源意味著什么?共享資源這種機(jī)制是如何實(shí)現(xiàn)的?如果你沒有答案的話,這篇文章就是為你準(zhǔn)備的。
1、首先是定義
進(jìn)程:是執(zhí)行中一段程序,即一旦程序被載入到內(nèi)存中并準(zhǔn)備執(zhí)行,它就是一個進(jìn)程。進(jìn)程是表示資源分配的的基本概念,又是調(diào)度運(yùn)行的基本單位,是系統(tǒng)中的并發(fā)執(zhí)行的單位。
線程:單個進(jìn)程中執(zhí)行中每個任務(wù)就是一個線程。線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位。
2、一個線程只能屬于一個進(jìn)程,但是一個進(jìn)程可以擁有多個線程。多線程處理就是允許一個進(jìn)程中在同一時刻執(zhí)行多個任務(wù)。
3、線程是一種輕量級的進(jìn)程,與進(jìn)程相比,線程給操作系統(tǒng)帶來側(cè)創(chuàng)建、維護(hù)、和管理的負(fù)擔(dān)要輕,意味著線程的代價或開銷比較小。
4、線程沒有地址空間,線程包含在進(jìn)程的地址空間中。線程上下文只包含一個堆棧、一個寄存器、一個優(yōu)先權(quán),線程文本包含在他的進(jìn)程 的文本片段中,進(jìn)程擁有的所有資源都屬于線程。所有的線程共享進(jìn)程的內(nèi)存和資源。 同一進(jìn)程中的多個線程共享代碼段(代碼和常量),數(shù)據(jù)段(全局變量和靜態(tài)變量),擴(kuò)展段(堆存儲)。但是每個線程擁有自己的棧段, 寄存器的內(nèi)容,棧段又叫運(yùn)行時段,用來存放所有局部變量和臨時變量。
5、父和子進(jìn)程使用進(jìn)程間通信機(jī)制,同一進(jìn)程的線程通過讀取和寫入數(shù)據(jù)到進(jìn)程變量來通信。
6、進(jìn)程內(nèi)的任何線程都被看做是同位體,且處于相同的級別。不管是哪個線程創(chuàng)建了哪一個線程,進(jìn)程內(nèi)的任何線程都可以銷毀、掛起、恢復(fù)和更改其它線程的優(yōu)先權(quán)。線程也要對進(jìn)程施加控制,進(jìn)程中任何線程都可以通過銷毀主線程來銷毀進(jìn)程,銷毀主線程將導(dǎo)致該進(jìn)程的銷毀,對主線程的修改可能影響所有的線程。
7、子進(jìn)程不對任何其他子進(jìn)程施加控制,進(jìn)程的線程可以對同一進(jìn)程的其它線程施加控制。子進(jìn)程不能對父進(jìn)程施加控制,進(jìn)程中所有線程都可以對主線程施加控制。
相同點(diǎn):
進(jìn)程和線程都有ID/寄存器組、狀態(tài)和優(yōu)先權(quán)、信息塊,創(chuàng)建后都可更改自己的屬性,都可與父進(jìn)程共享資源、都不鞥直接訪問其他無關(guān)進(jìn)程或線程的資源。
新聞標(biāo)題:簡單講解一下進(jìn)程與線程異同
當(dāng)前地址:http://fisionsoft.com.cn/article/djsidog.html


咨詢
建站咨詢
