在我最近了解到的一个相关问题中,必须非常小心地使用 MPI 与多个线程通信。由于我使用的实现不支持MPI_THREAD_MULTIPLE
,所以我只是MPI::COMM_WORLD
用std::lock_guard<std::mutex>
.
我现在的问题是:这是矫枉过正吗?具体来说:我可以在我Send
的确切时间Recv
吗?
我尝试了两个std::mutex
,一个用于发送,一个用于接收。在我的测试机器上,我进行了几次测试运行而没有错误,但这不能保证,这可能只是巧合..
补充:现在 - 通过数百次测试运行 - 实际上发生了一个糟糕的分段错误,但我不能 100% 确定这是否是由于同时发送/接收。