正如我在标题中所写,我想知道c ++标准线程是否在用户或内核空间中进行管理。
谢谢。
答案 0 :(得分:14)
几乎总是如此,标准并未要求任何特定的实施,它只要求所展示的行为符合其规则。
因此,具体实施可自由选择;另一方面,可能很多实现都将基于boost.thread(std::thread
提案所基于的),所以我们可以看看它有一个想法。
此库在Win32上的POSIX和Windows线程上使用pthread。 Win32线程肯定是内核线程,但是pthreads 在它们自己的上只是另一个接口,它可以在用户空间和内核空间中实现(尽管几乎任何最新的UNIX)内核提供了在内核空间中实现它们的工具。)
所以:std::thread
可以是任何东西,但是,在“主流”PC操作系统/实现中,你很可能会获得内核线程。如果由于某种原因您需要了解更多信息,请查看编译器的文档。
答案 1 :(得分:4)
接口是designed around pthreads,但是由libc ++的实现者来决定使用什么。