Старый вопрос, но можно использовать некоторые детали и точность:
Базовые потоки в XNU (ядро OS X и iOS) действительно являются потоками Маха, но обычно они скрыты от пользовательского режима. Вместо этого над ними есть потоки BSD (также известные как Uthreads), которые более доступны через системные вызовы (такие как # 360, bsdthread_create и friends). PThreads фактически оборачивает эти темы. Таким образом, вызов pthread create сбрасывается до системного вызова bsdthread_create, который в свою очередь (в режиме ядра) вызывает thread_create.
Mach вызывает , может вызываться напрямую из пользовательского режима (через генератор интерфейса Mach генерируются файлы MIG в / usr / include / mach / *). Это приходит в очень полезно для отладки / отслеживания / взлома потоков. Но в остальном, для UNIX-подобных целей лучше использовать оболочку pthreads, которая (по большей части) является переносимой.