作者reader (读者)
看板CSSE
标题Re: thread (执行绪) definition??
时间Mon Jan 23 17:21:21 2006
※ 引述《ashkenazy (有中出无懦夫)》之铭言:
: 放下无谓的争扰,我也从来没有质疑过教科书的说法
: 第一篇回文时也把教科书的说法与实作列出来,这也是因为我尊重教科书的说法
: 只是刚好原po问「一个程式如何区分出thread」
: 我就回答「Linux并没有区分所谓的process或thread」
: 现在回来看这个答案,还算中肯吧? 囧rz
这样的回答是陈述了一部分事实,却更容易让人误解。
就多数作业系统的核心实作而言, process 就是一种 kernel thread. 特别去区分
thread 和 process 的差异是多此一举。
但我们一般所讲的 thread 主要是指 user thread, 就是一个 process 里有好几个
thread 的状况。在作业系统核心不直接提供 user thread 的状况下,於是就有了
pthread 程式库来分担此一需求。
pthread 的 'p' 就是 pseudo 的意思,一般实作是在呼叫 I/O 函式或有系统插断时
切换到其他 user thread 继续执行。我没有阅读原始码,详细的情况还得由其他人
补充。
Thread Library 是 POSIX 标准的一部分,所以也是作业系统的一部分,有 pthread
library 就表示作业系统有 user thread, 只是不经由系统核心提供,而是透过系统
程式库来提供。
这个 thread 议题讲下去,还有硬体层级的 thread, 又和作业系统的 kernel thread
不同了。
这个字已经衍生出好些不同的意思了,不过就原题而言,应该是指 user thread. 用
kernel thread 来回答不能说很中肯喔。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.0.145
1F:推 ashkenazy:感谢reader大说明 不过小弟pthread不熟 有点问题 01/23 18:13
2F:→ ashkenazy:您指的user thread就是pthread lib的吗? 01/23 18:14
3F:推 ashkenazy:linux中的user thread与kernel thread都是所谓的process 01/23 18:23
4F:→ ashkenazy:所以不知是否我们所讨论的user thread是不同的东西? 01/23 18:23