栅栏方式
它是一种松同步方式,使用这一方式时,对窗口的操作必须放在一对栅栏语句之间,这样,当程序走出栅栏语句划定的区域之后,可以保证栅栏语句之间所有对窗口的操作都已经完成。
MPI_WIN_FENCE(assert, win)
INassert程序的声明
INwin 窗口对象
int MPI_Win_fence(int assert, MPI_Win win)
MPI_WIN_FENCE(ASSERT,WIN, IERROR)
INTEGER ASSERT, WIN, IERROR

MPI_WIN_FENCE是一个组调用,即win进程组内的所有进程,不管它有没有显式的窗口数据操作,都必须得执行这一调用。

MPI_WIN_FENCE的同步方式
进程0
进程1
进程N-1
MPI_WIN_FENCE
MPI_WIN_FENCE
MPI_WIN_FENCE
MPI_GET
MPI_PUT
MPI_WIN_FENCE
MPI_WIN_FENCE
MPI_WIN_FENCE


可以把第一个MPI_WIN_FENCE调用看作是允许下面后续的程序执行窗口操作,而第二个MPI_WIN_FENCE调用看作是上面所有关于窗口的操作都已经完成,即窗口数据已经修改完成,或者从窗口读取的数据已经达到本地缓冲区,从而可以使用该缓冲区中的数据或者释放该数据缓冲区。
MPI_WIN_FENCE是用作窗口的同步管理,是组调用,但是它不要求所有的组内进程都执行窗口操作,如图中进程1就可以没有任何的窗口操作。