【发布时间】:2019-06-14 09:04:00
【问题描述】:
POSIX 线程(由 pthread 库管理)是否并行工作?我的讲师告诉我们,这个库只创建不受 Linux 内核管理的用户线程。我写了一些填充大矩阵的代码,并比较了线程和整个程序的执行时间,它似乎可以并行工作。我可以使用这个库来创建带有内核识别线程的并行程序吗?
【问题讨论】:
-
也许您的讲师正在考虑 Windows?来自
man 7 pthreads:线程不共享进程 ID。 (实际上,LinuxThreads 线程被实现为共享更多信息的进程,但它们不共享公共进程 ID。)Linux-Threads 线程(包括管理器线程)使用 ps(1) 作为单独的进程可见。 -
@cdarke 即使这样线程也由内核管理并并行执行。讲师可能的意思是 POSIX 没有规定这种线程实现。理论上,符合 POSIX 的实现可以创建并发执行但不并行执行的用户线程。
-
@cdarke:LinuxThreads 早就被 NPTL 取代了。
-
@Obake:也许您的讲师将 pthreads 与 GNU pth 混淆了。