mpid_comm_disconnect.c
来自「fortran并行计算包」· C语言 代码 · 共 62 行
C
62 行
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* * * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */#include "mpidimpl.h"/*@ MPID_Comm_disconnect - Disconnect a communicator Arguments:. comm_ptr - communicator Notes:.N Errors.N MPI_SUCCESS@*/#undef FUNCNAME#define FUNCNAME MPID_Comm_disconnect#undef FCNAME#define FCNAME MPIDI_QUOTE(FUNCNAME)int MPID_Comm_disconnect(MPID_Comm *comm_ptr){ int mpi_errno; MPIDI_STATE_DECL(MPID_STATE_MPID_COMM_DISCONNECT); MPIDI_FUNC_ENTER(MPID_STATE_MPID_COMM_DISCONNECT); /* Before releasing the communicator, we need to ensure that all VCs are in a stable state. In particular, if a VC is still in the process of connecting, complete the connection before tearing it down */ /* FIXME: How can we get to a state where we are still connecting a VC but the MPIR_Comm_release will find that the ref count decrements to zero (it may be that some operation fails to increase/decrease the reference count. A patch could be to increment the reference count while connecting, then decrement it. But the increment in the reference count should come from the step that caused the connection steps to be initiated. Possibility: if the send queue is not empty, the ref count should be higher. */ /* FIXME: This doesn't work yet */ /* mpi_errno = MPIDI_CH3U_Comm_FinishPending( comm_ptr ); */ /* it's more than a comm_release, but ok for now */ /* FIXME: Describe what more might be required */ /* MPIU_PG_Printall( stdout ); */ mpi_errno = MPIR_Comm_release(comm_ptr,1); /* If any of the VCs were released by this Comm_release, wait for those close operations to complete */ MPIDI_CH3U_VC_WaitForClose(); /* MPIU_PG_Printall( stdout ); */ MPIDI_FUNC_EXIT(MPID_STATE_MPID_COMM_DISCONNECT); return mpi_errno;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?