OS X有哪些类型的线程?

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包装器(大多数情况下)是可移植的.


Mar*_*wis 2

它们是马赫线程

  • 英文版:http://books.google.com/books?id=K8vUkpOXhN4C&pg=PA730&dq=OSX+pthread_create&hl=en&ei=xK8KTbnZPIT78AaVqrCfAQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCMQ6AEwAA#v=onepage&q&f=false (2认同)