有没有一个C++等同于逻辑的时间

Is there a C++ equivalent of a logical when?

本文关键字:时间 等同于 有一个 C++      更新时间:2023-10-16

有没有办法用触发器来调节某些东西?具体来说,我有一个 MPI 实现,并希望在收到其他一些数据后立即发送一些数据。到目前为止,我已经使用了:

MPI_Wait(&recv_request,&status)
MPI_ISend(...)

我想知道是否有办法跳过等待并进行一些计算,并且仅在触发recv_request时才返回。

MPI 中的解决方案是使用 MPI_Test

int flag;
MPI_Test(&recv_request, &flag, &status);
while (!flag) {
    do_work();
    MPI_Test(&recv_request, &flag, &status);
}
// At this point, the request state is the same as for a completed MPI_Wait

do_work的工作粒度是一种权衡。如果每个调用的工作太少,则持续测试的开销将很大,并且完成的工作将很少。如果每次调用工作量太大,延迟会增加。如果您使用MPI_Test,与MPI_Wait相比,延迟总是更糟。

现在还有其他方法可以使用线程来做到这一点,但这可能更复杂,特别是需要与必要的线程级别兼容的 MPI 实现。