8.2.16 _gfortran_caf_sendget_by_ref — Пересылка данных между удалёнными образами с использованием улучшенных ссылок с обеих сторон
- Описание:
-
Вызывается для пересылки скаляра, части массива или целого массива из удалённого образа, идентифицированного src_image_index, в удалённый образ, идентифицированный dst_image_index.
- Синтаксис:
-
void _gfortran_caf_sendget_by_ref (caf_token_t dst_token, int dst_image_index, caf_reference_t *dst_refs, caf_token_t src_token, int src_image_index, caf_reference_t *src_refs, int dst_kind, int src_kind, bool may_require_tmp, int *dst_stat, int *src_stat, int dst_type, int src_type) - Аргументы:
-
dst_token intent(in) Непрозрачный указатель, идентифицирующий целевой комассив. dst_image_index intent(in) Идентификатор целевого удалённого образа; должен быть положительным числом. dst_refs intent(in) Ссылки на удалённый массив для хранения данных, предоставленных источником. Гарантируется, что будет хотя бы один элемент. src_token intent(in) Непрозрачный указатель, идентифицирующий исходный комассив. src_image_index intent(in) Идентификатор исходного удалённого образа; должен быть положительным числом. src_refs intent(in) Ссылки, применяемые к удалённой структуре для получения данных. dst_kind intent(in) Тип целевого аргумента src_kind intent(in) Тип исходного аргумента may_require_tmp intent(in) Переменная имеет значение false, если на этапе компиляции известно, что dest и src либо не могут перекрываться, либо перекрываются (полностью или частично) таким образом, что обход src и dest в порядке элементов (учитывая шаг) не приведёт к неправильным результатам. В противном случае значение равноtrue.dst_stat intent(out) Если не равно NULL, то возвращает результат операции пересылки, т.е. ноль при успехе и ненулевое значение при ошибке. ЕслиNULL, и произошла ошибка, то выводится сообщение об ошибке и программа завершается.src_stat intent(out) Если не равно NULL, то возвращает результат операции получения, т.е. ноль при успехе и ненулевое значение при ошибке. ЕслиNULL, и произошла ошибка, то выводится сообщение об ошибке и программа завершается.dst_type intent(in) Тип целевого объекта. Если цель не массив, то точный тип, например, компонента в производном типе, неизвестен, но предоставляется здесь. src_type intent(in) Тип исходного объекта. Если исходный объект не массив, то точный тип, например, компонента в производном типе, неизвестен, но предоставляется здесь. - ПРИМЕЧАНИЯ
-
Разрешается использовать один и тот же индекс образа как для src_image_index, так и для dst_image_index; в этом случае память отправления и получения может частично перекрываться. Реализация должна учитывать этот случай, например, используя
memmove, который обрабатывает (частично) перекрывающуюся память. Если may_require_tmp равно true, библиотека может дополнительно создать временную переменную, если дополнительные проверки покажут, что это не требуется (например, потому что обратный обход возможен или потому что оба массива являются непрерывными иmemmoveобрабатывает проблемы с перекрытием).Обратите внимание, что разрешается присваивание скаляра массиву. Кроме того, библиотека должна обрабатывать преобразование типов чисел и для строк — заполнение и различные типы символов.
Из-за более сложных ссылок некоторые операции могут быть не поддерживаемыми определёнными библиотеками. Библиотека должна выдать точное сообщение об ошибке, почему операция запрещена.
Далее: _gfortran_caf_lock, Предыдущее: _gfortran_caf_get_by_ref, Вверх: Документация по ABI функций [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gfortran/_005fgfortran_005fcaf_005fsendget_005fby_005fref.html