NPTL и путаница - PullRequest
       44

NPTL и путаница

18 голосов
/ 20 декабря 2011

В чем принципиальная разница между потоками NPTL и POSIX? Как эти два эволюционировали?

Ответы [ 3 ]

32 голосов
/ 20 декабря 2011

Потоки POSIX (pthread) не являются реализацией, это спецификация API (стандартная, на бумаге, на английском языке) нескольких функций, имя которых начинается с pthread_ и которые определены в заголовке <pthread.h>. POSIX также представляет собой набор спецификаций.

NPTL теперь находится внутри GNU Libc в Linux и является (или, по крайней мере, очень старается) реализацией потоков POSIX. Это набор исходного и двоичного кода в вашей системе Linux. Приложение, скомпилированное с gcc -pthread и связанное с -pthread, сегодня использует код NPTL в Linux.

1011 * добавления * Существуют альтернативные реализации pthread -s: в Linux MUSL Libc стремится быть Posix-совместимым (что означает наличие pthreads); в других системах Posix (AIX, Solaris, ...) у вас также есть pthreads (но они не NPTL или Glibc).

5 голосов
/ 20 декабря 2011

«POSIX threads» - это «стандарт», определяющий API для потоков.то есть он утверждает, что такие функции, как pthread_exit () и т. д., должны существовать в системе, и описывает, как они должны себя вести.Все POSIX-совместимые операционные системы реализуют потоки POSIX по-своему.

NPTL - это набор функций, которые позволяют "Linux" (ядру) эффективно реализовывать "потоки POSIX" (стандарт).

Вы можете узнать больше о NPTL и о том, как он появился здесь

2 голосов
/ 20 декабря 2011

Полагаю, ваш лучший источник информации начинается с Википедии и идет по ссылкам оттуда.

На самом деле нет никакой разницы: NPTL - это просто текущая реализация потоков POSIX в Linux,вы все еще используете семейство функций pthread_ *.Ранее в истории Linux использовалась специальная библиотека libpthreads.NPTL появился для ядер 2.6+ около 2003 года, для получения более подробной информации см. Ссылку выше.

[КСТАТИ: NPTL == Библиотека нативных потоков Posix]

...