在Linux上如何实现POSIX线程?

我想知道,通过pthreads库创build的线程实际上是内核级线程还是与内核无关的用户空间线程? 我听到了这个相互排斥的意见,所以我想知道事实。

在Linux 2.6之前,它们基本上是用户空间的线程,被粘在一起的单独的进程,因为内核没有真正的线程支持。 编辑:在2.6之前,对内核级线程(一个clone()函数)有一些有限的支持,但是它并没有和posix线程一起使用,只有一个叫做linuxthreads的替代线程库。 由于NPTL (Native Posix线程库)的到来是内核线程。

Linux上由pthread_create()创建的线程一直是内核级线程。 LinuxThreads没有完全遵守POSIX(同一个进程中的线程有不同的pid,信号处理与POSIX要求的不同),所以创建了NPTL来解决这些问题。

有一些库实现了用户级线程(例如:GNU pth,p是可移植的 ),但是它们不使用POSIX线程API。