ВУЗ:
Составители:
54
им потоков, поскольку происходит освобождение системных ресурсов,
выделенных для этого процесса. Еще одним отличием является невоз-
можность изменить права доступа для потока, тогда как дочерний про-
цесс в редких случаях (например, при смене пароля для входа в систе-
му) может обладать правами доступа, отличными от прав родительского
процесса.
Первая подсистема потоков в Linux появилась в 1996 году и назы-
валась LinuxThreads, ее автором является Ксавье Лерой (Xavier Leroy).
Разработанная им библиотека LinuxThreads была попыткой организо-
вать поддержку потоков в Linux в то время, когда ядро системы еще не
предоставляло никаких специальных механизмов для работы с потока-
ми. Позднее разработку потоков для Linux вели сразу две конкурирую-
щие группы – NGPT (New Generation POSIX Threads) и NPTL (Native
POSIX Thread Library). В 2002 году группа NGPT фактически присоеди-
нилась к NPTL и теперь реализация потоков NPTL является стандартом
Linux. Подсистема потоков Linux стремится соответствовать требовани-
ям стандартов POSIX, поэтому новые многопоточные приложения Linux
должны без проблем компилироваться на новых POSIX-совместимых
системах.
3.1.2. Преимущества и недостатки использования потоков
Потоки часто становятся источниками программных ошибок осо-
бого рода. Эти ошибки возникают при использовании потоками разде-
ляемых ресурсов системы (например, общего адресного пространства) и
являются частным случаем более широкого класса ошибок – ошибок
синхронизации. Если задача разделена между независимыми процесса-
ми, то доступом к их общим ресурсам управляет ОС, и вероятность
ошибок из-за конфликтов доступа снижается. Впрочем, разделение за-
дачи между несколькими независимыми процессами само по себе не
защищает от других разновидностей ошибок синхронизации. В пользу
потоков можно указать то, что накладные расходы на создание нового
потока в многопоточном приложении ниже, чем накладные расходы на
создание нового самостоятельного процесса. Уровень контроля со сто-
роны родительского процесса над порожденными потоками в многопо-
точном приложении выше, чем уровень контроля приложения над до-
черними процессами. Кроме того, в результате работы многопоточных
программ, как правило, не остаются незавершенными дочерние процес-
сы, зависящие от родительского (процессы-«зомби»), как может про-
изойти при использовании многопроцессного приложения.
Преимущества и недостатки использования нескольких потоков во
время выполнения программы приведены в табл. 3.1.
Страницы
- « первая
- ‹ предыдущая
- …
- 52
- 53
- 54
- 55
- 56
- …
- следующая ›
- последняя »