POSIX 线程与并行性
POSIX threads vs parallelism
POSIX 个线程(由 pthread 库管理)是否并行工作?我的讲师告诉我们这个库只创建用户线程,不由 Linux 内核管理。我写了一些代码来填充大矩阵并比较了线程和整个程序的执行时间,它似乎是并行工作的。我可以使用这个库来创建具有内核识别的线程的并行程序吗?
Posix 线程是在 Linux.
上具有 glibc/musl(+可能是其他 pthread 实现)的内核线程
您需要区分规范和实现。
POSIX 是一个 规范 并且(我认为)你的讲师是正确的 POSIX 没有规定线程需要由内核管理,并并行执行(至少我找不到任何相关的措辞in the official specification)。
在实践中,大多数主要实现——包括(如另一个答案中所述)通过 glibc 在 Linux 上,以及通过 MinGW 在 Windows 上——通过内核系统调用实现 pthreads 并在平行线。因此,如果您的讲师实际上说 pthreads 在具体使用中不是内核线程,那么这至少是误导性的,并且可以说是错误的。
POSIX 个线程(由 pthread 库管理)是否并行工作?我的讲师告诉我们这个库只创建用户线程,不由 Linux 内核管理。我写了一些代码来填充大矩阵并比较了线程和整个程序的执行时间,它似乎是并行工作的。我可以使用这个库来创建具有内核识别的线程的并行程序吗?
Posix 线程是在 Linux.
上具有 glibc/musl(+可能是其他 pthread 实现)的内核线程您需要区分规范和实现。
POSIX 是一个 规范 并且(我认为)你的讲师是正确的 POSIX 没有规定线程需要由内核管理,并并行执行(至少我找不到任何相关的措辞in the official specification)。
在实践中,大多数主要实现——包括(如另一个答案中所述)通过 glibc 在 Linux 上,以及通过 MinGW 在 Windows 上——通过内核系统调用实现 pthreads 并在平行线。因此,如果您的讲师实际上说 pthreads 在具体使用中不是内核线程,那么这至少是误导性的,并且可以说是错误的。