POSIX потоки против параллелизма - PullRequest
1 голос
/ 14 июня 2019

Работают ли потоки POSIX (управление с помощью библиотеки pthread) параллельно? Мой лектор сказал нам, что эта библиотека создает только пользовательские потоки, которые не управляются ядром Linux. Я написал некоторый код, который заполняет большую матрицу и сравнил время выполнения для потоков и всей программы, и похоже, что он работает параллельно. Могу ли я использовать эту библиотеку для создания параллельных программ с потоками, которые распознаются ядром?

Ответы [ 2 ]

3 голосов
/ 14 июня 2019

Потоки Posix - это потоки ядра с glibc / musl (+, возможно, другими реализациями pthread) в Linux.

1 голос
/ 14 июня 2019

Необходимо различать спецификацию и реализацию.

POSIX - это спецификация , и (я думаю) ваш лектор прав, что POSIX не диктует, что потоки должны управляться ядром и выполняться параллельно (по крайней мере, я не могу найти связанная формулировка в официальной спецификации ).

На практике большинство основных реализаций - в том числе (как упоминалось в другом ответе) в Linux через glibc и в Windows через MinGW - реализуют pthreads через системные вызовы ядра и выполняют их параллельно. Так что, если ваш лектор фактически заявил, что pthreads не являются потоками ядра в конкретном использовании, то это, по крайней мере, вводит в заблуждение и, возможно, неправильно.

...