本文小編為大家詳細介紹“Linux進程和線程有哪些區(qū)別”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Linux進程和線程有哪些區(qū)別”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
公司專注于為企業(yè)提供做網(wǎng)站、成都網(wǎng)站制作、微信公眾號開發(fā)、成都做商城網(wǎng)站,小程序設(shè)計,軟件按需定制等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
在理解進程和線程概念之前首選要對并發(fā)有一定的感性認識,如果服務(wù)器同一時間內(nèi)只能服務(wù)于一個客戶端,其他客戶端都再那里傻等的話,可見其性能的低下估計會被客戶罵出翔來,因此并發(fā)編程應(yīng)運而生,并發(fā)是網(wǎng)絡(luò)編程中必須考慮的問題。實現(xiàn)并發(fā)的方式有多種:比如多進程、多線程、IO多路復(fù)用。
進程是資源(CPU、內(nèi)存等)分配的基本單位,它是程序執(zhí)行時的一個實例。程序運行時系統(tǒng)就會創(chuàng)建一個進程,并為它分配資源,然后把該進程放入進程就緒隊列,進程調(diào)度器選中它的時候就會為它分配CPU時間,程序開始真正運行。
Linux系統(tǒng)函數(shù)fork()
可以在父進程中創(chuàng)建一個子進程,這樣的話,在一個進程接到來自客戶端新的請求時就可以復(fù)制出一個子進程讓其來處理,父進程只需負責監(jiān)控請求的到來,然后創(chuàng)建子進程讓其去處理,這樣就能做到并發(fā)處理。
# -*- coding:utf-8 -*- import os print('當前進程:%s 啟動中 ....' % os.getpid()) pid = os.fork() if pid == 0: print('子進程:%s,父進程是:%s' % (os.getpid(), os.getppid())) else: print('進程:%s 創(chuàng)建了子進程:%s' % (os.getpid(),pid ))
輸出結(jié)果:
當前進程:27223 啟動中 .... 進程:27223 創(chuàng)建了子進程:27224 子進程:27224,父進程是:27223
fork函數(shù)會返回兩次結(jié)果,因為操作系統(tǒng)會把當前進程的數(shù)據(jù)復(fù)制一遍,然后程序就分兩個進程繼續(xù)運行后面的代碼,fork分別在父進程和子進程中返回,在子進程返回的值pid永遠是0,在父進程返回的是子進程的進程id。
線程是程序執(zhí)行時的最小單位,它是進程的一個執(zhí)行流,是CPU調(diào)度和分派的基本單位,一個進程可以由很多個線程組成,線程間共享進程的所有資源,每個線程有自己的堆棧和局部變量。線程由CPU獨立調(diào)度執(zhí)行,在多CPU環(huán)境下就允許多個線程同時運行。同樣多線程也可以實現(xiàn)并發(fā)操作,每個請求分配一個線程來處理。
進程是資源分配的最小單位,線程是程序執(zhí)行的最小單位。
進程有自己的獨立地址空間,每啟動一個進程,系統(tǒng)就會為它分配地址空間,建立數(shù)據(jù)表來維護代碼段、堆棧段和數(shù)據(jù)段,這種操作非常昂貴。而線程是共享進程中的數(shù)據(jù)的,使用相同的地址空間,因此CPU切換一個線程的花費遠比進程要小很多,同時創(chuàng)建一個線程的開銷也比進程要小很多。
線程之間的通信更方便,同一進程下的線程共享全局變量、靜態(tài)變量等數(shù)據(jù),而進程之間的通信需要以通信的方式(IPC)進行。不過如何處理好同步與互斥是編寫多線程程序的難點。
但是多進程程序更健壯,多線程程序只要有一個線程死掉,整個進程也死掉了,而一個進程死掉并不會對另外一個進程造成影響,因為進程有自己獨立的地址空間。
讀到這里,這篇“Linux進程和線程有哪些區(qū)別”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章題目:Linux進程和線程有哪些區(qū)別
文章地址:http://jinyejixie.com/article18/johhgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、移動網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、微信小程序、網(wǎng)站改版、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)