Kernel-Level-Threads (wie Linux und einige * BSD-Systeme) oder etwas anderes? Wenn es einen Unterschied gibt, verwende ich Pthreads.Welche Art von Threads hat OS X?
Antwort
Sie sind Mach threads.
Alte Frage, könnte aber etwas mehr Detail und Genauigkeit verwenden:
Die zugrunde liegenden Fäden in XNU (das OS X und iOS-Kernel) sind in der Tat Mach Fäden, aber diese sind in der Regel vom Benutzermodus versteckt. Stattdessen gibt es BSD-Threads (auch uthreads genannt) über ihnen, die über die Systemaufrufe leichter zugänglich sind (z. B. # 360, bsdthread_create und friends). PThreads umhüllen diese Threads tatsächlich weiter. Auf diese Weise fällt ein Aufruf von pthread create durch den Systemaufruf bsdthread_create, der seinerseits (im Kernel-Modus) thread_create aufruft.
Mach Anrufe kann direkt aus dem Benutzermodus aufgerufen werden (über den Mach Interface Generator, erzeugte MIG Dateien in/usr/include/mach/*). Dies kommt in sehr nützlich für Debugging/Tracing/Hacking Threads. Aber sonst, für alle Absichten UNIX-wie, Sie sind besser dran mit der Pthreads Wrapper, die (zum größten Teil) portabel ist.
Und auf Englisch: 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 –
Dank . Das beantwortet meine Frage nicht direkt, sondern aus http://docs.google.com/viewer?a=v&q=cache:hDamQq6VffkJ:www.arl.wustl.edu/~fredk/Courses/cse522/fall03/Lectures/ threads.ppt + mach + Fäden + Kernel-Ebene & hl = pl & pid = bl & SRCID = ADGEEShkOaLiHkYeCZd02esRsX2FCqeYYe4gSCEpa4-YYf0z9KneErv9ivZt-Qec77qawty9KtXNJvh7LxGJtLXdllqMrKMAjM10qVyqawgnAR_XYxvS5xxI2nyvatONInc8CU0RPh_x & sig = AHIEtbRh_1hv1n2_hiNkpASPmcQsLJyXrw wie diese aussieht Kernel-Ebene ist – Pyetras
Nun ... In einem Mikro-Kernel gibt es tatsächlich zwei Kerne: das Mikro-Kernel und der Betriebssystem "Kernel" (welches eigentlich auf mehrere Aufgaben verteilt sein kann). Sie sind also * nicht * OS-Kernel-Threads, sondern Microkernel-Threads. –