Linux中pthread创建的线程属于ULT还是KLT?

问题描述 投票:0回答:1

使用Linux的pthread库创建的线程是用户级线程还是内核级线程?

我希望这个问题能得到专业的解答。因为我听说不同版本的 Linux 内核以及不同的编译器版本会对问题的答案产生影响。

linux pthreads
1个回答
0
投票

使用Linux的pthread库创建的线程是用户级线程还是内核级线程?

如果它是使用托管在操作系统之上的程序或库创建的,那么它就是用户级线程。

[...] 我听说不同版本的 Linux 内核以及不同的编译器版本会对问题的答案产生影响。

不,他们没有。在用户空间中运行的线程是用户级线程。在内核中运行的线程是内核级线程。除非您正在编写内核代码,否则用户级线程是您可以直接启动或交互的唯一类型。如果您正在编写内核代码,那么您就没有 pthreads 或其他库可以利用,只有内核本身。

您可能对历史上 Linux 上有多种 Pthreads 实现感到困惑,主要是:

这两种实现都将线程创建为由内核调度的实体,但这并不会使它们成为内核级线程。

更一般地,存在完全在用户空间中调度的线程实现,即所谓的“

绿色线程”。我不知道有任何 Linux pthreads 实现使用这种方法,但如果有的话,它们肯定会提供用户级线程。

Linux 确实有内核级线程,但您的用户级程序不会看到它们或直接与它们交互。

© www.soinside.com 2019 - 2024. All rights reserved.