如何在Linux上实现POSIX线程?

时间:2011-05-07 08:14:39

标签: linux multithreading pthreads

我想知道通过pthreads库创建的线程是否实际上是与内核无关的内核级线程或用户空间线程?我听过相互排斥的意见,所以我想知道真相。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

Linux上由pthread_create()创建的线程一直是内核级线程。 LinuxThreads并不完全符合POSIX(同一进程中的线程有不同的pid,信号处理与POSIX要求不同,......),因此创建了NPTL来解决这些问题。

有些库实现了用户级线程(例如:GNU pth,p用于 Portable ),但它们不使用POSIX线程API。