Pye*_*ras 3 parallel-processing macos multithreading bsd darwin
内核级线程(如Linux和某些*BSD系统)还是其他什么?如果有任何差异,我正在使用pthreads.
小智 6
老问题,但可以使用更多的细节和准确性:
XNU(OS X和iOS内核)中的底层线程确实是Mach线程,但这些线程通常是隐藏在用户模式下的.相反,它们上面有BSD线程(也称为uthreads),它们可以通过系统调用(例如#360,bsdthread_create和朋友)访问.PThreads实际上进一步包装了这些线程.通过这种方式,对pthread create的调用将进入系统调用bsdthread_create,而系统调用bsdthread_create依次(在内核模式下)调用thread_create.
可以直接从用户模式调用Mach调用(通过Mach Interface Generator,在/ usr/include/mach/*中生成MIG文件).这对于调试/跟踪/黑客线程非常有用.但除此之外,对于所有类似于UNIX的意图,你最好使用pthreads包装器(大多数情况下)是可移植的.