Функции, безопасные в многопоточной среде
Функции, безопасные в многопоточной среде
Стандарт POSIX.1 требует, чтобы все определенные в нем функции, а также функции, определенные в стандарте ANSI С, были безопасными в многопоточной среде. Исключения из этого правила приведены в табл. 26.1.
К сожалению, в POSIX.1 ничего не сказано о безопасности в многопоточной среде по отношению к функциям сетевого API. Последние пять строк в этой таблице появились благодаря Unix 98. В разделе 11.18 мы говорили о том, что функции gethostbyname и gethostbyaddr не допускают повторного вхождения. Как уже отмечалось, некоторые производители определяют версии этих функций, обладающие свойством безопасности в многопоточной среде (их названия заканчиваются на _r), но поскольку они не стандартизованы, лучше от них отказаться. Все функции getXXX, не допускающие повторного вхождения, были приведены в табл. 11.5.
Таблица 26.1. Функции, безопасные в многопоточной среде
Могут не быть безопасными в многопоточной среде Должны быть безопасными в многопоточной среде Комментарии Asctime asctime_r Безопасна в многопоточной среде только в случае непустого аргумента ctermid Ctime ctime_r getc_unlocked getchar_unlocked Getgrid getgrid_r Getgrnam getgrnam_r Getlogin getlogin_r Getpwnam getpwnam_r Getpwuid getpwuid_r Gmtime gmtime_r Localtime localtime_r putc_unlocked putchar_unlocked Rand rand_r Readdir readdir_r Strtock strtock_r tmpnam Безопасна в многопоточной среде только в случае непустого аргумента Ttyname ttyname_r GethostXXX GetnetXXX GetprotoXXX GetservXXX inet_ntoaПриведенная таблица позволяет заключить, что общим способом сделать функцию допускающей повторное вхождение является определение новой функции с названием, оканчивающимся на _r. Обе функции будут безопасными в многопоточной среде, только если вызывающий процесс выделяет в памяти место для результата и передает соответствующий указатель как аргумент функции.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Процессы в многопроцессорной среде
Процессы в многопроцессорной среде В программе 6.1 процессы и их основные (и только эти) потоки выполняются практически полностью независимо друг от друга. Единственная зависимость между ними проявляется лишь в конце выполнения родительского процесса, поскольку он
Библиотеки с многопоточной поддержкой
Библиотеки с многопоточной поддержкой При проектировании пользовательских библиотек следует уделять самое пристальное внимание тому, чтобы избежать возникновения проблем, связанных с параллельным выполнением нескольких потоков, особенно в тех случаях, когда речь
Решение проблемы долговременных состояний в многопоточной среде
Решение проблемы долговременных состояний в многопоточной среде В искомом решении сочетаются несколько компонентов:• Библиотека DLL, в которой содержатся функции, обеспечивающие отправку и прием сообщений.• Функция, представляющая точку входа в DLL.• Локальная
Комментарии по поводу DLL и безопасной многопоточной среды
Комментарии по поводу DLL и безопасной многопоточной среды • Всякий раз, когда создается новый поток, вызывается функция DllMain с опцией DLL_THREAD_ATTACH, но для основного потока отдельного вызова с опцией DLL_THREAD_ATTACH не существует. В случае основного потока должна использоваться
ГЛАВА 16 Программирование в среде Win64
ГЛАВА 16 Программирование в среде Win64 Наиболее заметный прогресс в развитии возможностей Windows после появления Windows NT и Windows 95 связан с приходом 64-разрядного программирования и расширением Win32 до Win64. На объединенный API обычно ссылаются просто как на Windows API, и именно такой
Глава 7 Безопасные распределенные вычислительные системы
Глава 7 Безопасные распределенные вычислительные системы План, что и говорить, был превосходный: простой и ясный, лучше не придумаешь. Недостаток у него был только один: было совершенно неизвестно, как привести его в исполнение. Л. Кэрролл. Алиса в стране чудес Описанные
Доступ к среде передачи
Доступ к среде передачи Общим в наиболее распространенных технологиях локальных сетей является то, что несколько сетевых устройств совместно используют одну и ту же среду передачи данных, и соответственно делят между собой полосу пропускания сети. Для корректного и
6.9 Доступ к среде
0
Глава 15. Обитание в среде KDE
Глава 15. Обитание в среде KDE В этой главе я хочу вкратце показать, как создать на компьютере, работающем под управлением ОС Linux, удобную для пользователя рабочую среду. До такой степени удобную, чтобы вообще можно было отказаться от использования Windows и Windows-продуктов. К
П17. К главе 15 "Обитание в среде KDE"
П17. К главе 15 "Обитание в среде KDE" 1. На русской версии сайта KDE Вы найдете документацию по KDE на русском языке. Там есть руководство по компиляции, русификации и ссылки. Там же ищите список зеркал, откуда можно скачать исходники. (http://www.kde.org/international/russia/index.html) 2. Сайт http://www.kde.ru/
5.1.1. Способ 1: безопасные соединения
5.1.1. Способ 1: безопасные соединения Самый простой способ защиты электронной почты заключается в использовании безопасных соединений. Наверняка вы знаете, что существует HTTPS – безопасная версия протокола HTTP. Данные, передаваемые по протоколу HTTPS, шифруются с помощью
Создание приложения в среде MS Visual C++ 5.0
Создание приложения в среде MS Visual C++ 5.0 Перед началом работы необходимо скопировать файлы glut.h, glut32.lib glut32.dll в каталоги…MSVCIncludeGl,…MSVCLib,…WindowsSystem соответственно. Также в этих каталогах надо проверить наличие файлов gl.h, glu.h, opengl32.lib, glu32.lib, opengl32.dll, glu32.dll, которые обычно входят в
Создание приложения в среде Borland C++ 5.02
Создание приложения в среде Borland C++ 5.02 Как и для Visual C++, сначала надо обеспечить наличие файлов glut.h, glut32.lib, glut32.dll в каталогах…BorlandCIncludeGl,…BorlandCLib,…WindowsSystem соответственно. Также в этих каталогах надо проверить наличие файлов gl.h, glu.h, opengl32.lib, glu32.lib, opengl32.dll, glu32.dll, которые обычно
Серверы Firebird в среде DTP
Серверы Firebird в среде DTP Детальное обсуждение среды распределенной обработки транзакций (Distributed Transaction Processing, DTP) не является целью данной книги. Достаточно сказать, что Суперсервер или Классический сервер Firebird хорошо подходят к различным сценариям DTP.Open Group, определившая
ГЛАВА 33. Безопасность в операционной среде.
ГЛАВА 33. Безопасность в операционной среде. В Firebird не существует средств для шифрования и дешифрования данных (кроме паролей пользователей), которые передаются через клиентский интерфейс. Существуют некоторые ограничения в использовании инструментов Firebird, которые
Работа с документами в среде Flash
Работа с документами в среде Flash Теперь давайте поговорим о том, как во Flash выполняется работа с документами, а потом плавно перейдем к рассмотрению окна документа и основных принципов создания
Стивенс Уильям Ричард
Просмотр ограничен
Смотрите доступные для ознакомления главы 👉