作者lqke (Incessant philandering)
看板CSSE
标题Re: [请问]Process VS Thread
时间Wed Apr 26 15:20:42 2006
※ 引述《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