【筆記】程序和執行緒的概念和異同
一、程序
1.程序就是一個正在執行的程式。程序是作業系統分配資源的最小單位。
2.程序的缺點:
(1)程序佔有系統資源;
(2)程序的切換給作業系統帶來了額外的開銷;
(3)建立新程序會把父程序的資源複製一份到子程序,如果建立多個程序,會佔用大量資源;
(4)程序間的資料共享需要OS的干預。
二、執行緒
(1)執行緒是一種輕量級的程序。
(2)執行緒沒有系統資源。
(3)執行緒是OS排程的最小單位。
(4)一個程序由一個或多個執行緒組成。
(5)在一個程序內部,多個執行緒之間資源共享
三、程序和執行緒對比
1.資源分配不同
2.工作效率不同。程序有系統資源,程序切換時要保留資源,故效率低。執行緒的切換不需要保留系統資源,效率高。
3.執行方式不同。程序可以被OS直接排程,執行緒必須在程序中執行。
相關推薦
【筆記】程序和執行緒的概念和異同
一、程序 1.程序就是一個正在執行的程式。程序是作業系統分配資源的最小單位。 2.程序的缺點: (1)程序佔有系統資源; (2)程序的切換給作業系統帶來了額外的開銷; (3)建立新程序會把父程序的資源複製一份到子程序,如果建立多個程序,會佔用大量資源; (4)程序間的資料共享
【Python筆記】Python多執行緒程序如何正確響應Ctrl-C以實現優雅退出
相信用C/C++寫過服務的同學對通過響應Ctrl-C(訊號量SIG_TERM)實現多執行緒C程序的優雅退出都不會陌生,典型的實現偽碼如下: #include <signal.h> int main(int argc, char * argv[])
【Linux系統學習】程序與執行緒
程序執行新程式 程序等待 wait()函式 程序執行新程式 fork()/exec()組合是典型的Linux
程序和執行緒概念
1、程序 (1)一次程式的執行; (2)系統進行資源分配和排程的獨立單位; 例如:windows資源管理器裡面的.exe 2、執行緒 (1)程序中獨立執行的子任務 3、區別 (1)程序可以包含多個執行緒; 例如QQ.exe包含資料傳輸執行緒、下載執行緒等 4、多執行緒的
程序和執行緒概念對比
程序: 程序是作業系統分配資源的最小單位。 程序之間是相互獨立的,一般不可互相訪問(除非利用分散式計算方式)。 程序有自己的獨立地址空間,每啟動一個程序,系統就會為它分配地址空間,建立資料表來維護程式碼段、堆疊段和資料段。 程序間切換代價很昂貴。 執行緒: 執行緒是執行的最小單位。 一個程序可以
Qt 筆記:程序與執行緒的概念
程式是計算機儲存系統中的資料檔案 -原始碼程式 ·文字檔案,描述程式行為和功能 -可執行程式 ·二進位制檔案,直接載入並執行 程序的概念 -廣義概念 ·程式關於某個資料集合的一次運動活動 -狹義概念 ·程式被載入到記憶體中執行後得到程序 程式和程序的聯絡
【Java】Java多執行緒實現的聊天客戶端和伺服器
主要涉及知識 ·Java中GUI程式的編寫,包括事件監聽機制。 ·Java的網路通訊程式設計,ServerSocket,Socket類的使用。 ·Java中多執行緒的程式設計,Thread類,Runnable介面的使用。 原始碼 客戶端 package project1
【JavaScript高階】11、執行緒機制和事件機制
一、程序與執行緒 1. 程序:程式的一次執行, 它佔有一片獨有的記憶體空間 2. 執行緒: CPU的基本排程單位, 是程式執行的一個完整流程 3. 程序與執行緒 * 一個程序中一般至少有一個執行的執行緒: 主執行緒 * 一個程序中也可以同時執行多個執行緒, 我們會說程式是多執行
【轉】Java多執行緒-同步集合和併發集合
同步集合可以簡單地理解為通過synchronized來實現同步的集合。如果有多個執行緒呼叫同步集合的方法,它們將會序列執行。 arrayList和vector、stack Vector是執行緒安全的,原始碼中有很多的synchronized可以看出,而
【Linux程序排程】程序與執行緒的本質區別?
簡而言之,執行緒是程序的一部分,程序是程式的一部分。 異同: 1、程序是資源分配的基本單位,而執行緒是排程的基本單位; 2、程序與程序之間是獨立的,一個程序的異常終止不會影響其它程序,而執行緒與執行
【自用】java多執行緒程式設計學習筆記(程式碼片段來源於網路)
執行緒的基本概念 執行緒是在邏輯上等同於作業系統中說的程序,是程序的細分。比如我們使用同一個軟體同時對電腦進行體檢和防毒的時候,我們就是開啟了那個軟體的程序的兩個執行緒,在邏輯上這兩個執行緒是同時被cpu執行的。 執行緒的生命週期 執行緒的生命週期分為建立,就緒,執行,
【原】對多執行緒中Wait和Join的理解
對於,wait方法的解釋,有時候覺得很矛盾。呼叫某個物件的wait時,需要獲得該物件的鎖,在執行的時候又需要釋放該物件的所有鎖。這是問題一。 另外,在看Join的原始碼,會發現它利用了Wait來實現,但是它的實現原理是怎樣的呢? 這是問題二。 看下原始碼的英文描述:
程序與執行緒理解和關係
程序 執行緒的含義 程序就是一個程式在一個數據集上的一次動態執行過程。 程序一般由程式、資料集、程序控制塊三部分組成。我們編寫的程式用來描述程序要完成哪些功能以及如何完成;資料集則是程式在執行過程中所需要使用的資源;程序控制塊用來記錄程序的外部特徵,描述程序的執行變化過程,系統可以利用它
【轉】Leader-Follower執行緒模型
上圖就是L/F多執行緒模型的狀態變遷圖,共6個關鍵點: (1)執行緒有3種狀態:領導leading,處理processing,追隨following (2)假設共N個執行緒,其中只有1個leading執行緒(等待任務),x個processing執行緒(處理),餘下有N-1-x個following執行緒
關於作業系統中程序、執行緒、和任務之間的關係
Vxworks系統中程序、執行緒和任務之間的關係  
CUDA學習筆記(2)- 執行緒並行和塊並行
1. 獲取顯示卡裝置資訊 有些顯示卡支援CUDA有些不支援,那麼如何確定主機的顯示卡裝置是否支援CUDA呢。可以使用下面的函式獲取顯示卡的相關資訊。 cudaError_t cudaGetDeviceCount(int *count) 獲取支援CUD
【C++】併發-1 執行緒管理-1
【建立】 有四種方式: 預設 傳入執行函式 定義一個類, 過載 operator() ,執行緒執行過程 lambda // std::thread 簡單使用 namespace T1 { template<class T> class Thread
【轉】在子執行緒中new Handler報錯--Can't create handler inside thread that has not called Looper.prepare()
在子執行緒中new一個Handler為什麼會報以下錯誤? java.lang.RuntimeException: Can't create handler inside thread that has not ca
【胡思亂想】JNI與執行緒池的維護
JNI中,C/C++程式碼裡建立的資源不由Java GC處理,故這裡的資源必須由C/C++程式碼明確釋放。在JNI中,C/C++回撥Java的方法是呼叫一個CallXXMethod函式來實現的,如果回撥的方法結束,C/C++執行下一行程式碼。 故猜測,由C/C++建立的OS執行緒應該會在執行完run方法後釋放
【Qt】Qt的執行緒(兩種QThread類的詳細使用方式)
Qt提供QThread類以進行多工處理。與多工處理一樣,Qt提供的執行緒可以做到單個執行緒做不到的事情。例如,網路應用程式中,可以使用執行緒處理多種聯結器。 QThread繼承自QObject類,且提供QMutex類以實現同步。執行緒和程序共享全域性變數,可以使用互斥體對改變後的全域性變數值