程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 一起talk C栗子吧(第一百三十二回:C語言實例--從內存的角度看進程和線程)

一起talk C栗子吧(第一百三十二回:C語言實例--從內存的角度看進程和線程)

編輯:關於C語言

一起talk C栗子吧(第一百三十二回:C語言實例--從內存的角度看進程和線程)



各位看官們,大家好,上一回中咱們說的C程序內存布局的例子,這一回咱們說的例子是:從內存的角度看進程和線程。閒話休提,言歸正轉。讓我們一起talk C栗子吧!

看官們,我們剛剛介紹完C程序的內存布局,我們趁熱打鐵,從內存的角度來分析一下進程和線程。

不管是進程還是線程,他們都會加載到內存中才能運行,因此他們在內存中的布局和其它C程序的內存布局完全相同。進程和線程的內存布局也分為代碼區,數據區,堆區和棧區。

對進程來說,父子進程只共享代碼區中的內容,父子進程擁有各自的數據區,堆區和棧區。而且它們只能訪問自己進程空間中的內容。這也是多進程運行時需要通過其它方式進行通信的原因,比如使用管道在兩個進程之間進行通信。 對於線程來說,多個線程共享主進程的內存資源,包括代碼區,數據區,堆區和棧區。不過每個線程擁有 自己獨立的棧區,而且不同其它線程共享。線程共享主進程的資源後,線程之間的通信變的容易一些,它 們可以直接使用主進程的資源,而且不需要借助三方的工具來使用資源。 每個進程擁有自己的進程空間,在創建進程時需要為進程分配這些空間,因此需要更多的時間來創建進程。每個線程都在共享主進程的內存空間,在創建線程時只需要分配棧區給他們的就可以,其它的分區都是共用的,因此創建線程的時間會快一些。這也是線程比進程高效的原因。 進程的內存空間是私有的,而線程的內存空間是共享的。因此,線程之間的通信比進程之間的通信效率 高。這才是線程與進程最大的區別,這也是大家喜歡線程最主要的原因。

各位看官,關於從內存角度看進程和線程的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved