next up previous contents
След.: Ввод и вывод Выше: Операторы синхронизации Пред.: Критические секции   Содержание


Оператор SYNC MEMORY

Выполнение оператора SYNC MEMORY определяет границу между сегментами одного образа, каждый из которых может быть упорядочен произвольно по выбору пользователя относительно сегментов других образов. В отличие от других операторов управления образами, он не влечет встроенного эффекта синхронизации. Если пользователь задал порядок образов, компилятор, вероятно, будет избегать оптимизации, связанной с переносом операторов через SYNC MEMORY и обеспечит доступность всем образам всех измененных данных, которые образ хранит во временной памяти, таких как кэш, регистры и даже пакеты обмена данными между образами. Также любые данные с других образов, хранимые во временной памяти, будут считаться неопределенными, пока не будут обновлены образом- хозяином.

Стандарт не предписывает, как распределять ресурсы между образами, но примечание гласит, что распределение должно быть непредвзятым. Поэтому вполне возможна ситуация, при которой удовлетворительная с точки зрения стандарта реализация отдаст все ресурсы циклу ожидания, не делая ничего на образе $ p$ , что приведет к зависанию программы.

В заключение приведем полный список операторов синхронизации (или операторов управления образами):

Все операторы управления образами, кроме LOCK, CRITICAL, UNLOCK и END CRITICAL, имеют эффект выполнения SYNC MEMORY. Операторы SYNC ALL, SYNC IMAGES, LOCK, UNLOCK, SYNC MEMORY имеют необязательные спецификаторы STAT и ERRMSG, аналогичные одноименным спецификаторам операторов ALLOCATE и DEALLOCATE. Если один из этих операторов (включая, конечно, ALLOCATE и DEALLOCATE) столкнется с образом, который выполнил оператор STOP или END PROGRAM, и имеет спецификатор STAT, то указанная переменная получит значение константы STAT_STOPPED_IMAGE встроенного модуля ISO_FORTRAN_ENV, а эффект в прочем от выполнения оператора будет такой, как если бы был выполнен оператор SYNC MEMORY. Без модификатора STAT такой оператор приведет к аварийному завершению программы.



Ilya A. Chernov 2012-12-19
X