正如我在标题中所写,我想知道 C++ 标准线程是在用户空间还是在内核空间中管理的。
谢谢你。
正如几乎总是发生的那样,该标准不强制要求任何特定的实现,它只要求所展示的行为符合其规则。
因此,可以自由选择特定的实现方式;另一方面,可能很多实现都会基于 boost.thread(std::thread
提案所基于的),所以我们可以看看它有一个想法。
这个库在 POSIX 上使用 pthreads,在 Win32 上使用 Windows 线程。Win32 线程绝对是内核线程,但 pthread本身只是另一个接口,它可以在用户空间和内核空间中实现(尽管几乎所有最近的 UNIX 内核都提供了在内核空间中实现它们的工具)。
所以:std::thread
可以是任何东西,尽管在“主流”PC 操作系统/实现上,您很可能会获得内核线程。如果由于某种原因您需要了解更多信息,请查看编译器的文档。
该接口是围绕 pthreads 设计的,但由 libc++ 的实现者决定使用什么。