Подтвердить что ты не робот

NPTL и pthread запутывают

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

4b9b3361

Ответ 1

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

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

добавлений

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

Ответ 2

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

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

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

Ответ 3

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

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

[BTW: NPTL == Native Posix Threads Library]