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 + -
显示快捷键?