【发布时间】:2011-05-26 20:55:39
【问题描述】:
内核级线程(如 Linux 和一些 *BSD 系统)还是其他?如果有任何区别,我使用的是 pthreads。
【问题讨论】:
标签: multithreading macos parallel-processing bsd darwin
内核级线程(如 Linux 和一些 *BSD 系统)还是其他?如果有任何区别,我使用的是 pthreads。
【问题讨论】:
标签: multithreading macos parallel-processing bsd darwin
老问题,但可以使用更多细节和准确性:
XNU(OS X 和 iOS 内核)中的底层线程确实是 Mach 线程,但这些线程通常对用户模式隐藏。相反,在它们之上有 BSD 线程(也称为 uthread),它们更容易通过系统调用(例如 #360、bsdthread_create 和friends)访问。 PThreads 实际上进一步包装了这些线程。通过这种方式,对 pthread create 的调用落入系统调用 bsdthread_create,然后(在内核模式中)调用 thread_create。
Mach 调用可以直接从用户模式调用(通过 Mach 接口生成器,MIG 在 /usr/include/mach/* 中生成的文件)。这对调试/跟踪/黑客线程非常有用。非常。但除此之外,对于所有类似于 UNIX 的意图,最好使用 pthreads 包装器,它(在大多数情况下)是可移植的。
【讨论】:
他们是Mach threads。
【讨论】: