為什麼這篇Process vs thread鄉民發文收入到精華區:因為在Process vs thread這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者lqke (Incessant philandering)看板CSSE標題Re: [請問]Pro...
※ 引述《nwoyoyoyo (YoYoYo)》之銘言:
: 前提:我寫了一支MultiThread的程式Demo給老闆看
: 我老闆說:Process 跟 Thread到底有什麼差別?Why Thread?Why not Process?
: 我說:Process比較Heavy Thread比較Ligth,所以context switch的時候比較省力
: 老闆說:竟然它是用Heavy跟Ligth來作對比,
: 那使用Process跟使用Thread的時機差在哪嗎?
: 有明確的定義跟使用時機嗎?
: 我說: Thread可以Share Memory加上速度比較快
: 所以現在大部分在寫多工的程式時通常都用Thread
: 老闆說:一定會有人Well-Defined Procee跟Thread的使用時機的
: 去給我找出來到比差在哪裡?
: 個位大爺,可以給我一些好意見嗎?什麼樣的意見都好,砍掉重練也可以的啦!謝了!
: 當然User-Thread跟Kernal-Thread的各種不同解釋也是ok的啦?
kernel level thread: thread直接由OS核心排程
又稱為light weight process, scheduling is as complex as processes
but data sharing is cheaper
User level thread: 由核心觀點來看仍是排程一個單一process
thread schedulling是由該process自己做
無法直接將thread分到不同cpu上跑
"share memory"通常是指在不同process之間共享同一塊資料
thread則是本身就是共享同一塊記憶體空間
(當然各自還是有一塊空間在放像pc, stack這些資訊)
proecss所需的系統資源遠較thread
我沒有統計資料
但試想一個web server有可能針對每個使用者開一個process去服務嗎?
另外不能說使用thread較容易當機
會當機多是程式設計不良所造成的
(有沒有注意到同步問題?有沒有注意deadlock?用沒有用thread-safe functions?)
只能說除錯比較麻煩囉
: 總之...什麼意見都好...只要你肯教我一下
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.48.72