您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“怎么理解進程,線程,協(xié)程”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
進程
進程是操作系統(tǒng)分配資源的最小單位,也就是我們寫的每個程序都至少包含一個進程,當然也可能包括多個進程。在進程中,我們有自己的資源管理,我們可以申請內(nèi)存,可以進行數(shù)據(jù)的運算,這些都是進程需要處理的事情。
線程
既然有了進程,為什么還要線程呢?因為進程切換太消耗資源了。我們知道一個事物或者一種方法的出現(xiàn),一定是為了解決某種問題或者某些問題。而線程的出現(xiàn)就是為了方便操作系統(tǒng)調(diào)度,因此,線程是操作系統(tǒng)調(diào)度的最小單位。一個進程里面可以有一個線程,也可以有多個線程,多個線程之間互相做自己的事情,但是它們共享進程的存儲空間,也就是說它們都可以訪問進程的內(nèi)存空間,這樣的好處就是方便線程的通信,缺點也很明顯,如果多個線程都想同時修改共享內(nèi)存的數(shù)據(jù),它們就會產(chǎn)生競爭,而鎖的機制就是為了解決共享內(nèi)存的線程之間修改共享內(nèi)存的一種方法。
攜程
進程的創(chuàng)建需要最多的資源,線程需要的資源比它小很多,但是人們似乎還是不滿意,于是協(xié)程誕生了,它需要的資源的更少,只需要幾kb,也就是說一個普通的主機也能夠輕輕松松啟動幾十萬個協(xié)程。之前我們說過,進程是cpu分配資源的最小單位,線程是cpu管理的最小單位,那么協(xié)程cpu怎么管理呢?答案就是操作系統(tǒng)cpu不直接管理協(xié)程,而是由用戶自己去管理,因此,我們經(jīng)常也把協(xié)程叫做用戶態(tài)線程。
既然協(xié)程是有用戶管理的,因此我們可以根據(jù)我們的需要在不同協(xié)程之間進行切換,比如當一個協(xié)程遇到io耗時操作的時候,我們可以將cpu資源切換到其它協(xié)程,這樣我們就可以大幅提升cpu利用率。
雖然協(xié)程很方便,但是由于需要用戶自己去管理狀態(tài)切換,因此用戶需要實現(xiàn)一個處理器調(diào)度機制,這其實并不簡單,這也是為什么知道最近才有很多語言實現(xiàn)協(xié)程。
總結(jié)
無論是進程,線程還是協(xié)程,它們統(tǒng)一說來都是一個資源塊,都是可以被cpu調(diào)度的一塊代碼塊,不同的就是cpu是如何調(diào)度它們的。操作系統(tǒng)通過進程和線程的管理來處理cpu的調(diào)度,操作系統(tǒng)封裝了進程和線程的實現(xiàn),我們只需要做的就是讓我們的程序盡可能合理分配處理器資源。
當明白了這些,我們更多關(guān)注的就是進程之間如何通信,線程和進程之間如何通信,協(xié)程間如何通信,這些其實才是我們在編碼過程中投入更多精力關(guān)注的。
“怎么理解進程,線程,協(xié)程”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。