next up previous contents
Next: Другой способ установки соединения Up: Другая функциональность Previous: MPI_APPNUM   Contents

Освобождение соединений

Прежде чем клиент и сервер соединятся друг с другом, они являются независимыми приложениями MPI. Ошибка в одном из них не влияет на другое. Однако, после установки соединения посредством MPI_COMM_CONNECT и MPI_COMM_ACCEPT, ошибка в одном может повлиять на другое. Поэтому желательно, чтобы клиент и сервер могли рассоединяться так, чтобы ошибка в одном из них не влияла на другое. Также было бы желательно рассоединение родителя и потомка, чтобы ошибка в потомке не влияла на родителя и наоборот.

К функциям MPI применяются следующие дополнительные правила:



MPI_COMM_DISCONNECT (comm)



INOUT comm Коммуникатор (строка)  





int MPI_Comm_disconnect(MPI_Comm *comm)

MPI_COMM_DISCONNECT(COMM, IERROR)
INTEGER COMM, IERROR

void MPI::Comm::Disconnect()

Эта функция ожидает полного завершения всех незаконченных соединений для comm, освобождает коммуникационный объект, и устанавливает дескриптор в MPI_COMM_NULL. Это коллективная операция. Она не может быть выполнена для коммуникатора MPI_COMM_WORLD или MPI_COMM_SELF.

MPI_COMM_DISCONNECT может быть вызвана только после завершения всех соединений, чтобы буферизованные данные могли быть доставлены по назначению. Это требование такое же, как и в MPI_FINALIZE.

MPI_COMM_DISCONNECT имеет такое же действие, как и MPI_COMM_FREE, за исключением того, что она ждет, чтобы завершились незаконченные соединения, и позволяет гарантировать поведение отсоединенных процессов.

Совет пользователям: Чтобы рассоединить два процесса, пользователь может вызвать одну из функций MPI_COMM_DISCONNECT, MPI_WIN_FREE и MPI_FILE_CLOSE, чтобы удалить все пути связи между двумя процессами. Отметьте, что может понадобиться отсоединить несколько коммуникаторов (или освободить несколько окон файлов), прежде чем два процесса станут полностью независимы.[]

Объяснение: Было бы замечательно использовать взамен MPI_COMM_FREE, но эта функция точно не ожидает завершения незаконченных соединений.[]



Alex Otwagin 2002-12-10