Linux是从什么时候开始支持线程的.

几天前和同事吃饭,谈论到一个问题:linux从什么时候开始支持线程。他说linux中的线程出现的很晚,直到2.2.x才有。

我觉得不对啊,怎么会那么晚。然后它用手机搜索了一下,linux对POSIX线程库的支持确实很晚,直到2.6.x才有。

但我觉得POSIX线程库只不过是用户空间用来创建线程的接口,并不能证明那么晚linux才支持线程。

后来用PC的时候搜索了一下,在The Linux Document Project的官方网站找到了答案:

http://www.tldp.org/FAQ/Threads-FAQ/Support.html

Does Linux support threads?

Yes. As of 1.3.56, Linux has supported kernel-space multithreading. There also have been user-space thread libraries around as early as 1.0.9. There is on-going effort to refine and make the kernel more reentrant. With the introduction of 2.1.x, the memory space is being revised so that the kernel can access the user memory more quickly.

问: Linux支持线程吗?

答: 是的,自从1.3.56开始,Linux就开始支持内核空间中的多线程了。早到1.0.9,就已经有了用户空间的线程库。

/////

这里有个比较混淆的概念:内核线程, 内核态支持多线程。

内核态支持多线持指的是在内核空间支持线程的调度,创建,销毁等操作。

内核线程则是另外一个概念,它和一般task的最大区别是,描述内核线程的task_struct结构体中的内存描述符mm_struct是NULL。具体参考经典书:linux kernel development. 我另一篇贴子也有写到: http://blog.ykyi.net/2012/06/%E5%86%85%E6%A0%B8%E7%BA%BF%E7%A8%8B%E6%98%AF%E4%BB%80%E4%B9%88%E4%B8%9C%E4%B8%9C-what-is-kernel-threads/ 是从Understand the linux kernel抄下来的。