我们正在移植 Isis2 (isis2.codeplex.com) 以更好地使用 Infiniband 动词并让我们的代码运行。但是,IB 面向异步接收模型,在该模型中您发布一堆接收缓冲区,然后在接收完成时处理接收到的数据。
轮询很慢:如果我使用阻塞等待,比如说 2 毫秒,我可能会延迟 2 毫秒才能看到 IB 数据。所以这是一个解决方案,但很糟糕。我真正想要的是一种等待 IB 完成记录最终确定然后让我的线程立即唤醒的方法(在 Windows 上这很容易......在 Linux 上它不那么自然)。有谁知道如何做到这一点?使用动词时,没有任何 IB 文件描述符,所以显然我不能使用 select()