程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 為什麼需要多進程/線程

為什麼需要多進程/線程

編輯:關於C語言

 

  

  什麼是進程(Process):普通的解釋就是,進程是程序的一次執行,而什麼是線程(Thread),線程可以理解為進程中的執行的一段程序片段。在一個多任務環境中下面的概念可以幫助我們理解兩者間的差別:

  • 進程間是獨立的,這表現在內存空間,上下文環境;線程運行在進程空間內。
  • 一般來講(不使用特殊技術)進程是無法突破進程邊界存取其他進程內的存儲空間;而線程由於處於進程空間內,所以同一進程所產生的線程共享同一內存空間。(圖一)
  • 同一進程中的兩段代碼不能夠同時執行,除非引入線程。
  • 線程是屬於進程的,當進程退出時該進程所產生的線程都會被強制退出並清除。
  • 線程占用的資源要少於進程所占用的資源。
  • 進程和線程都可以有優先級。
  • 在線程系統中進程也是一個線程。可以將進程理解為一個程序的第一個線程。

圖一

  一個最簡單的例子就是在屏幕上畫多個跳動的小球,我們對每個球的繪制都可以采用一個線程來完成。但是象這樣的線程間完全獨立沒有影響沒有數據交換的情況是很少的。

下面我們看一個例子,一個應用要完成兩個任務:每次產生1000個隨機數寫入文件並從文件中讀出數據並以該隨機數為圓心畫圓,對該操做進行100次,並使用100個不同的文件保存文件。傳統做法如下:

void do_this(void)
{
         for(int i=0;i<100;i++)
         {
                 /// step 1
                 generate 1000 randam number;
    						

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