程序是資源(cpu、記憶體等)分配的基本單位,它是程式執行時的乙個例項。程式執行時系統就會建立乙個程序,並為它分配資源,然後把該程序放入程序就緒佇列,程序排程器選中它的時候就會為它分配cpu時間,程式開始真正執行。
linux系統函式fork()
可以在父程序中建立乙個子程序,這樣的話,在乙個程序接到來自客戶端新的請求時就可以複製出乙個子程序讓其來處理,父程序只需負責監控請求的到來,然後建立子程序讓其去處理,這樣就能做到併發處理。
# -*- coding:utf-8 -*-
import os
print('當前程序:%s 啟動中 ....' % os.getpid())
pid = os.fork()
if pid == 0:
print('子程序:%s,父程序是:%s' % (os.getpid(), os.getppid()))
else:
print('程序:%s 建立了子程序:%s' % (os.getpid(),pid ))
輸出結果:
當前程序:27223 啟動中 ....
程序:27223 建立了子程序:27224
子程序:27224,父程序是:27223
fork函式會返回兩次結果,因為作業系統會把當前程序的資料複製一遍,然後程式就分兩個程序繼續執行後面的**,fork分別在父程序和子程序中返回,在子程序返回的值pid永遠是0,在父程序返回的是子程序的程序id。
執行緒是程式執行時的最小單位,它是程序的乙個執行流,是cpu排程和分派的基本單位,乙個程序可以由很多個執行緒組成,執行緒間共享程序的所有資源,每個執行緒有自己的堆疊和區域性變數。執行緒由cpu獨立排程執行,在多cpu環境下就允許多個執行緒同時執行。同樣多執行緒也可以實現併發操作,每個請求分配乙個執行緒來處理。
執行緒和程序的區別
易於排程。執行緒切換比程序切換要快。虛擬記憶體空間,io裝置等 開銷小。建立執行緒比建立進行要快,所需開銷小。進展用少量資源,如棧和暫存器。提高併發性。程序可以建立多個執行緒來執行統一程式的不同任務。有利於充分發揮多處理器的功能。通過建立多執行緒的程序,每個執行緒在乙個處理器上執行,從而實現了應用程...
執行緒和程序的區別
這個問題我查了不下4次,每次都是突然想到查一下,當時明白,完了又會混淆 首先我們知道 程序 執行緒 執行緒 在乙個程式裡面的多個任務,比如賣票系統,他有退票和賣票的功能,我們就可以給他稱之為執行緒。程序 我們開啟任務管理器可以看到的是我們在系統上執行的程式稱之為執行緒 總之,乙個程式必須有乙個程序,...
執行緒和程序的區別
1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務。3.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu...