Spec-Zone.ru › GNU Fortran 11

5.5 Безопасность потоков библиотеки выполнения

GNU Fortran можно использовать в программах с несколькими потоками, например, с помощью OpenMP, вызывая функции обработки потоков ОС через ISO_C_BINDING или вызывая код библиотеки GNU Fortran, скомпилированной для работы в многопоточной программе.

Библиотека выполнения GNU Fortran (libgfortran) поддерживает одновременное вызов из нескольких потоков с указанными исключениями.

Во время инициализации библиотеки используется функция C getenv, которая не обязательно является потокобезопасной. Аналогично, функция getenv используется для реализации GET_ENVIRONMENT_VARIABLE и GETENV встроенных функций. Пользователь обязан убедиться, что среда не обновляется одновременно, когда происходит любая из этих операций.

Встроенные функции EXECUTE_COMMAND_LINE и SYSTEM реализованы с помощью функции system, которая не обязательно является потокобезопасной. Пользователь обязан убедиться, что system не вызывается одновременно.

На платформах, не поддерживающих потокобезопасные функции POSIX, дальнейшая функциональность может быть не потокобезопасной. Подробности см. в документации вашей операционной системы.

Библиотека выполнения GNU Fortran использует различные функции библиотеки C, зависящие от локали, такие как strtod и snprintf. Для правильной работы в программах, учитывающих локаль, которые устанавливают локаль с помощью setlocale, локаль сбрасывается до стандартной локали “C” во время выполнения форматированного READ или WRITE оператора. На целевых платформах, поддерживающих функции локали POSIX 2008 для каждого потока (например, newlocale, uselocale, freelocale), используются эти функции, и, следовательно, глобальная локаль, установленная с помощью setlocale, или локаль каждого потока в других потоках, не затронуты. Однако на целевых платформах, не имеющих этой функциональности, глобальная локаль LC_NUMERIC устанавливается в “C” во время форматированного ввода-вывода. Следовательно, на таких платформах небезопасно вызывать setlocale одновременно из другого потока во время выполнения операции форматированного ввода-вывода Fortran. Кроме того, другие потоки, выполняющие операции, зависящие от локали LC_NUMERIC, могут работать неправильно, если в другом потоке выполняется операция форматированного ввода-вывода.

Далее: Согласованность и долговечность данных, Предыдущее: Встроенные функции MAX и MIN с аргументами REAL NaN, Наверх: Характеристики компилятора [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gfortran/Thread_002dsafety-of-the-runtime-library.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API