Win32多線程程序設計-進程與線程
進程-Processes
從win32的角度看,進程含有內存和資源,被進程擁有的內存,理論上可以高達2GB。資源則包括核心對象(如file handles和線程)、USER資源(如對話框和字元串)、GDI資源(Device Context和brushes)
進程本身並不能夠執行,它只是提供一個安置內存和線程的地方。在Windows95系統程序設計大奧秘一書中的解釋是「進程就是一大堆對象的擁有權的集合。也就是說,進程擁有對象。進程可以擁有內存(更精確的說是擁有memory context),可以擁有file handles,可以擁有線程,可以擁有一大串DLL模塊」
內存
每一個進程都關係到內存。內存可以大致分為三種類型:
Code-是程序的可執行部分,一定是只讀性質。這是cpu唯一允許執行的內存。可執行Windows NT的兩種晶元:Inter 晶元和RISC晶元
Data-是程序中所有的變數(不包含函數中的局部變數),可以區分為全局變數和靜態變數。當然也可以使用malloc()或new 動態配置內存
Stack-調用函數時所用的堆棧空間,其中有局部變數。每個線程產生時配有一個堆棧。如果需要,操作系統會將它動態擴充。
線程-Threads
進程和內存並沒有真正「做」什麼事情。一旦cpu開始執行程序代碼,就有了一個線程。在同一時間同一個進程,你就可以擁有一大把線程,執行同一段代碼。
定義一個·線程,需要的數據並不多。線程在「任何時刻下的狀態」被定義在進程的某塊內存中,以及cpu寄存器。其他的重要數據,如變數以及應用程序的調用堆棧,存儲在進程中那些可被其他線程共享的內存內
進程是一個正在執行的程序,是向CPU申請資源的,進程之間數據相互獨立,一個進程至少有一個線程。
線程是進程中的單一的順序控制流程也可以叫做最小控制單元,線程是進程中執行單元,開啟一個線程比開啟一個進程更加節省資源。
多線程是多任務處理的一種特殊形式,多任務處理允許讓電腦同時運行兩個或兩個以上的程序。一般情況下,兩種類型的多任務處理:基於進程和基於線程
多線程程序包含可以同時運行的兩個或多個部分。這樣的程序中的每個部分稱為一個線程,每個線程定義了一個單獨的執行路徑。
基於進程的多任務處理是程序的並發執行。
基於線程的多任務處理是同一程序的片段的並發執行。
推薦閱讀:
※這兩個研究有可能動搖「癌症登月計劃」,細思恐極|奇點猛科技
※如何評價我國實現 18 個量子比特糾纏,再次刷新世界紀錄?
※點火創意PK!里約高科技 悉尼經典
※第01期 網路工程師考證和行業(時時學視頻)
TAG:科技 |
