Какой тип потоков у OS X? - PullRequest
       21

Какой тип потоков у OS X?

2 голосов
/ 17 декабря 2010

Потоки уровня ядра (например, Linux и некоторые системы * BSD) или что-то еще? Если есть какая-то разница, я использую pthreads.

Ответы [ 2 ]

5 голосов
/ 26 августа 2012

Старый вопрос, но можно использовать некоторые детали и точность:

Базовые потоки в 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, которая (по большей части) является переносимой.

1 голос
/ 17 декабря 2010
...