LINUX.ORG.RU

pthreads


0

0

http://www.opennet.ru/docs/RUS/linux_parallel/node46.html
говорит, что
1) "Основной библиотекой для реализации пользовательских потоков является библиотека потоков POSIX, которая называется pthreads"
2) "Недостатки пользовательских потоков:
* большинство системных вызовов является блокирующими
и ядро блокирует процессы - включая все потоки в пределах процесса"

Т.е. pthreads - не потоки уровня ядра и использовать их
например для блокирующих вызовов TCP/IP нет смысла,
т.к. один поток будет вешать весь процесс целиком?

★★

> pthreads - не потоки уровня ядра

pthreads реализуются на уровне ядра. подробности man 7 pthreads

zwon
()

> Т.е. pthreads - не потоки уровня ядра и использовать их например для блокирующих вызовов TCP/IP нет смысла, т.к. один поток будет вешать весь процесс целиком?

pthreads могут быть реализованы по разному (google://pthreads model 1x1 MxN).

В NPTL, например, используется модель 1x1 и потоки с блокирующимими вызовами работают нормально.

execve
()

Я могу ошибаться, но IMHO ядро Linux не выделяет потоки как отдельные сущности (и fork и pthread_create сделаны через системный вызов clone), поэтому если одна из задач делает системный вызов с блокировкой, все остальные задачи продолжают бегать как положено(запрограммировано).

jr_A
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.