10 linux multithreading pthreads
我想知道通过pthreads库创建的线程实际上是内核级线程还是与内核无关的用户空间线程?我听到了相互排斥的意见,所以我想知道真相.
在Linux 2.6之前,它们本质上是用户空间线程,由于内核没有真正的线程支持,它们被粘合在一起.编辑:在2.6之前对内核级线程(clone()函数)有一些有限的支持,但是它没有与posix线程一起使用,只有一个名为linuxthreads的替代线程库.由于NPTL(Native Posix线程库)的到来,它们是内核线程.
pthread_create()
Linux上创建的线程一直是内核级线程.LinuxThreads并不完全符合POSIX(同一进程中的线程有不同的pid,信号处理与POSIX要求的不同,......),因此创建了NPTL来解决这些问题.
有些库实现了用户级线程(例如:GNU pth,p用于Portable),但它们不使用POSIX线程API.