MSMPI_Waitsome_interruptible 函数

等待,直到至少一个与列表中的活动句柄关联的操作完成,或者调用 MSMPI_Queuelock_acquire的另一个线程中断调用。

语法

int MPIAPI MSMPI_Waitsome_interruptible(
        int                                         incount,
        _Inout_count_(incount) MPI_Request          array_of_requests[],
  _Out_ int                                         *outcount,
        _Out_cap_post_count_(incount,*outcount) int array_of_indices[],
        _Out_cap_post_count_(incount,*outcount) int array_of_statuses[]
);

参数

  • incount
    数组中的请求数 array_of_requests

  • array_of_requests
    等待完成的操作的请求句柄数组。 如果请求句柄是由非阻止通信函数分配的,则会解除分配该句柄,并且关联的句柄设置为 MPI_REQUEST_NULL

  • outcount [out]
    array_of_requests 参数中指定的请求数(已完成)以及 array_of_indicesarray_of_statuses 数组中的元素数。

    如果 array_of_requests 不包含活动句柄,则函数会立即返回,并将 outcount 参数设置为 MPI_UNDEFINED

    如果此函数在完成任何请求之前中断,则调用将返回,并将 outcount 参数设置为零。

  • array_of_indices
    返回已完成的操作的 array_of_requests 参数内的索引。 数组索引在 C 中从零开始,在 Fortran 中从 1 开始。

  • array_of_statuses
    返回已完成的操作的状态。 此数组的元素对应于 array_of_indices 数组的元素。

返回值

返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。

在 Fortran 中,返回值存储在 IERROR 参数中。

如果函数返回 MPI_ERR_IN_STATUS以外的错误,则它不会更新 array_of_statuses 参数中状态的错误字段。

注解

在多线程环境中,用户必须先使用 MSMPI_Queuelock_acquire 函数获取全局 Microsoft MPI 锁,然后才能调用 MSMPI_Waitsome_interruptible。 当另一个线程调用 MSMPI_Queuelock_acquire 函数以访问 MPI 库时,此函数将中断。

此函数是标准的扩展。

要求

产品

HPC Pack 2012 MS-MPI 可再发行程序包、HPC Pack 2008 R2 MS-MPI 可再发行程序包、HPC Pack 2008 MS-MPI 可再发行程序包或 HPC Pack 2008 客户端实用工具

标头

Mpi.h

Msmpi.lib

DLL

Msmpi.dll

另请参阅

MPI 点到点函数

MSMPI_Lock_queue

MSMPI_Queuelock_acquire

MSMPI_Queuelock_release

MPI_Waitsome