# 執行緒比較 [](https://hackmd.io/8eGsSfmgTyOMQ31CuuPLfQ) ## Program (程式): - 比喻: - 藍圖、設計圖 - 可以想像建築師要設計一座工廠,而定義這座工廠要如何建造、規劃的藍圖就是Program - 工程師在IDE裡編寫的程式碼(code)也是Program,也就是說,尚未載入記憶體的 程式碼,就可以稱之為Program - 一個Program中可以存在多個Process(進程) ## Process (程序、進程): - 比喻: - 實體工廠 - Process就是依照名為Program的藍圖建造出的實體工廠 - 指的是已經執行並且載入到記憶體中的Program,程序中的每一行代碼隨時都有可能被CPU調用執行 - 在生活中,點開應用程式就是將Program活化成Process,因此我們可以在電腦的「工作管理員」中看到PID(進程ID),也就是執行中的Process - 每一個 Process 是互相獨立的 - Process不是最基本執行單位,而是Thread(線程)的容器 - 在多功作業系統(Multitasking OS)中,可以同時執行數個Process,但一個CPU一次只能執行一個Process。(因此誕生了現在的多核處理器) ## Thread (執行緒、線程): - 比喻: - 工人 - Thread就是工廠內的工人,確保工廠的每項功能,並且共享工廠內的每一項資源 - 在同一個Process中會可以有很多個Thread - 每一個Thread負責某一項功能,以聊天室Process為例,可以同時接受對方的訊息及發送訊息給對方,就是Process中不同Thread的功勞 - 同一個Process底下的Thread會共享資源(如記憶體、變數等),不同的Process則之間不會互相共享 - 在多執行緒中(Multithreading),兩個執行緒若同時存取或改變全域變數,則可能發生同步(Synchronization)問題,若執行緒之間互搶資源,則可能產生死結(Deadlock) ###### tags `OS`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up