線程和進程

來源:互聯網
上載者:User

標籤:視頻播放   聊天   自己   同步原語   gpo   問題   顯示   proc   輸入   

1、進程#進程(Process,有時被稱為重量級進程)是程式的一次執行。每個進程都有自己的地址空間、記憶體、資料棧以及記錄運行軌跡的輔助資料,作業系統管理啟動並執行所有進程,並為這些進程公平分配時間。進程可以通過fork和spawn操作完成其他任務。因為各個進程有自己的記憶體空間、資料棧等,所以只能使用處理序間通訊(IPC),而不能直接共用資訊。 2、線程#線程(Thread,有時被稱為輕量級進程)跟進程有些相似,不同的是所有線程運行在同一個進程中,共用運行環境。#線程有開始、順序執行和結束3部分,有一個自己的指令指標,記錄運行到什麼地方。線程的運行可能被搶佔(中斷)或暫時被掛起(睡眠),從而讓其他線程運行,這叫作讓步。一個線程中的各個線程之間共用同一片資料空間,所以線程之間可以比進程之間更方便地共用資料和相互連信。#線程一般是並發執行的。正是由於這種並行和資料共用的機制,使得多個任務的合作變得可能。實際上,在單CPU系統中,真正的並發並不可能,每個線程會被安排成每次只運行一小會兒,然後就把CPU讓出來,讓其他線程運行。#在進程的整個運行過程中,每個線程都只會做自己的事,需要時再跟其他線程共用運行結果,。多個線程共同訪問同一片資料不是完全沒有危險的,由於資料訪問的順序不一樣,因此有可能導致資料結果不一致的問題,這叫作競態條件。大多數線程庫都帶有一系列同步原語,用於控制線程的執行和資料的訪問。 3、多線程與多進程#對於“多任務”這個詞,相信讀者不會是第一次看見,現在的操作(如Mac OS X、UNIX、Linux、Windows等)都支援“多任務”作業系統。#什麼叫“多任務”呢?簡單地說,就是系統可以同事運行多個任務。比如,一邊用瀏覽器上網,一邊用雲音樂,一邊聊天,這就是多任務。此時手頭已經有3個任務在運行了。如果查看工作管理員,可以看到還有很多任務悄悄在後台運行著,只是案頭沒有顯示出來而已。#對於作業系統來說,一個任務就是一個進程,開啟多個任務就是多進程。#有些進程不止可以同時做一件事情,比如work可以同時打字、拼字檢查、列印等。在一個進程內部,要同時做多件事,就需要同時運行多個線程。#多線程類似於同時執行多個不同的程式,多線程運行有以下3個優點:①、使用線程可以把佔據長時間的程式中的任務放到後台去處理。②、使用者介面可以更加吸引人,比如使用者單擊一個按鈕,用於觸發某些事件的處理,可以彈出一個進度條顯示處理的進度。③、程式的運行速度可能加快。 #在實現一些等待任務(如使用者輸入、檔案讀寫和網路收發資料等)時,使用多線程更加有用。在這種情況下,我們可以釋放一些珍貴資源(如記憶體佔用等)。#線程在執行過程中與進程還是有區別的,每個獨立線程有一個程式啟動並執行入口、順序執行序列和程式的出口。但是線程不是獨立執行,必須依存在進程中,由進程提供多個線程執行控制。#由於每個進程至少要幹一件事情,因此一個進程至少有一個線程,當然如word這種複雜的進程可以有多個進程,多個線程可以同時執行。多線程的執行方式和多進程是一樣的,也是由作業系統在多個線程之間快速切換,讓每個線程都短暫交替運行,看起來就像同時執行一樣。當然,真正同時執行多線程需要多核CPU才能實現。#我們前面編寫的所有Python程式都是執行單任務的進程,也就是只有一個線程。如果我們要同時執行多個任務,該如何操作?#有兩種解決方案:一種方法是啟動多個進程。每個進程雖然只有一個線程,但多個進程可以一起執行多個任務。另一種方法是啟動一個進程,在一個進程內啟動多個線程,這樣多個線程也可以一起執行多個任務。#當然,還有第3種方法,就是啟動多個進程,每個進程再啟動多個線程,這樣同時執行的任務就更多了,不過這種模型過於複雜,實際很少採用。#同時執行多個任務時,各個任務之間並不是沒有關聯的,而是需要相互連信和協調,有時任務1必須暫停任務等待任務2完成後才能繼續執行有時任務3和任務4不能同時執行。多進程和多線程程式的複雜度遠遠高於我們前面寫的單進程、單線程的程式。#不過很多時候,沒有多任務還真不行。想想在電腦上看電影,必須由一個線程播放視頻,另一個線程播放音頻,否則使用單線程實現只能先把視頻播放完再播放音頻,或者先把音頻播放完再播放視頻,這樣顯然不行。#總而言之,多線程是多個相互關聯的線程的組合,多線程是多個互相獨立的進程的組合。線程是最小的執行單元,進程至少由一個線程組成。

線程和進程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.