目錄併發與並行
非同步程式由指令和資料組成,但這些指令要執行,資料要讀寫,就必須將指令載入至 cpu,資料載入至記憶體。在指令執行過程中還需要用到磁碟、網路等裝置。程序就是用來載入指令、管理記憶體、管理 io 的
當乙個程式被執行,從磁碟載入這個程式的**至記憶體,這時就開啟了乙個程序
程序就可以視為程式的乙個例項。大部分程式可以同時執行多個例項程序,也有的程式只能啟動乙個例項程序
乙個程序之內可以分為一到多個執行緒
乙個執行緒就是乙個指令流,將指令流中的一條條指令以一定的順序交給 cpu 執行
j**a 中,執行緒作為最小排程單位,程序作為資源分配的最小單位。 在 windows 中程序是不活動的,只是作為執行緒的容器
程序基本上相互獨立的,而執行緒存在於程序內,是程序的乙個子集
程序擁有共享的資源,如記憶體空間等,供其內部的執行緒共享
程序間通訊較為複雜
3.1 同一臺計算機的程序通訊稱為 ipc(inter-process communication)
3.2 不同計算機之間的程序通訊,需要通過網路,並遵守共同的協議,例如 http
執行緒通訊相對簡單,因為它們共享程序內的記憶體,乙個例子是多個執行緒可以訪問同乙個共享變數
執行緒更輕量,執行緒上下文切換成本一般上要比程序上下文切換低
併發:乙個時間段內同時執行
並行:乙個時間點同時執行
以呼叫方角度來講,如果:
1.1 需要等待結果返回,才能繼續執行就是同步
1.2 不需要等待結果返回,就能繼續執行就是非同步
處理比較費時的操作時,可以開乙個新執行緒處理操作避免阻塞主線程
單核 cpu 下,多執行緒不能實際提高程式執行效率,只是為了能夠在不同的任務之間切換,不同執行緒輪流使用cpu
多核 cpu 可以並行跑多個執行緒,但能否提高程式執行效率還是要分情況的
程序與執行緒
程序 process 管理單元,管理分配應用程式的資料,的記憶體空間.執行緒 thread 執行單元,執行緒負責執行乙個預先編排好的 段,執行 棧是基於執行緒的.乙個應用程式啟動的時候,程序自動建立,並且會預設建立主線程,主線程負責執行main 方法.thread t new thread new ...
程序與執行緒
程序 是擁有資源的實體,包括 1。乙個程序有乙個虛擬位址空間,不同程序位於不同的 虛擬位址空間中。程序之間若要通訊,必須通過作業系統 的功能呼叫 ipc 2。程序擁有其他資源,例如開啟的檔案和i o裝置。程序結束時,作業系統會自動釋放該程序擁有的所有資源。例如,如果 open乙個檔案而不close它...
程序與執行緒
程序包括 1 私有的虛位址空間 2 可執行程式 與資料 3 開啟系統資源列表控制代碼 4 安全訪問標誌 5 程序id 6 至少有乙個執行執行緒 執行緒包括 1 一組cpu暫存器狀態 2 兩個堆疊 系統態與使用者態 3 tls 執行緒區域性儲存區 4 執行緒id 5 安全特性 因此程序是不活潑的,它從...