7.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обрабатывает проблемы с перекрытием).Обратите внимание, что присвоение скаляра массиву разрешено. Кроме того, библиотека должна обрабатывать преобразование типов чисел и, для строк, заполнение и различные виды символов.
Из-за более сложных возможных ссылок некоторые операции могут быть неподдерживаемыми определёнными библиотеками. Библиотека должна выводить точное сообщение об ошибке, объясняющее, почему операция не допускается.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gfortran/_005fgfortran_005fcaf_005fsendget_005fby_005fref.html