程序是系統中正在執行的乙個程式,程式一旦執行就是程序。
程序可以看成程式執行的乙個例項。程序是系統資源分配的獨立實體,每個程序都擁有獨立的位址空間。乙個程序無法訪問另乙個程序的變數和資料結構,如果想讓乙個程序訪問另乙個程序的資源,需要使用程序間通訊,比如管道,檔案,套接字等。
乙個程序可以擁有多個執行緒,每個執行緒使用其所屬程序的棧空間。執行緒與程序的乙個主要區別是,統一程序內的乙個主要區別是,同一程序內的多個執行緒會共享部分狀態,多個執行緒可以讀寫同一塊記憶體(乙個程序無法直接訪問另一程序的記憶體)。
示例:任務管理器中可看,乙個個應用都代表乙個 程序
執行緒是作業系統進行運算排程的最小單位。
程序在執行任何乙個 操作或者響應,都是由執行緒去完成的,程序包含執行緒,執行緒一定屬於程序,程序和執行緒之間是一對多的關係
乙個程序裡面有多個執行流併發執行。比如乙個人既可以某一段時間內即看電視有吃東西,每個動作類似於執行緒,在同一段時間內做不同的事,並且還可以進行資訊共享。
以下實現都基於c#進行實現。
ui介面展示:
計算耗時方法**:
public void dosomething(int n)同步方法**:}
//同步方法非同步多執行緒方法**:private void button1_click(object sender, eventargs e)
}
//非同步多執行緒方法private void button2_click(object sender, eventargs e)
);//執行耗時方法
} }同步方法跟非同步多執行緒方法執行後效果對比:
控制台資料結果:
cpu占用資源結果:
結果分析:
從執行結果來看,總結幾點
1.同步比非同步執行時間更長,同步只有乙個執行緒參與計算(主線程),由於主線程參與計算,導致ui介面卡頓,計算完成後主執行緒閒置,ui介面不卡頓,
非同步執行時間短,介面不卡頓,主線程閒置,啟用五個執行緒參與計算,效率高,但占用cpu資源較多。
2.同步符合正常程式邏輯,有序執行,非同步執行順序是無序的,執行順序是有cpu排程決定。
3.從執行時間來看,單執行緒執行時間為16582ms,啟用五個執行緒執行時間為3460ms,以正常思維來看,乙個執行緒執行16582ms,五個執行緒執行應該是3316ms才對,並沒有起到五倍的效率。
原因有兩點:1.資源是有限的 2.執行緒排程會有損耗
同步單執行緒方式執行效率低,介面卡頓,使用者體驗性不太好,占用cpu資源少。
非同步多執行緒方式執行效率高,介面不卡頓,使用者體驗性較好,占用cup資源多。
有時候使用多執行緒並不是越多越好,應酌情使用。
程序,執行緒,多執行緒,執行緒池
程序是執行緒的容器,乙個程序包含多個執行緒。執行緒的定義是程式的執行路徑。每個執行緒都定義了乙個獨特的控制流,如果應用程式涉及到複雜且耗時的操作,那麼設定不同的執行緒執行路徑會非常有好處,因為每個執行緒會被指定於執行特定的工作。單一執行緒會導致程式只能執行乙個任務,為了使程式能執行多個任務,就要用到...
程序 多執行緒
程序類似於整個公司 乙個程序 乙個程式 process.start using system using system.collections.generic using system.componentmodel using system.data using system.diagnostics...
程序 單執行緒 多執行緒
文章出處 程序 乙個正在執行的程式可以看做乙個程序,例如 正在執行的qq就是乙個程序 程序擁有獨立執行所需要的全部資源 執行緒 程式中獨立執行的 段。例如 接收qq訊息的 乙個程序是由一或多個執行緒組成,程序只負責資源的排程和分配,執行緒才是程式真正的執行單元,負責 的執行。單執行緒每個正在執行的程...