作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
调用 rdma_disconnect() 时,我是在 rdma_disconnect() 返回之前获得所有已发布的 recv 工作请求的完成队列事件,还是我应该期望它们在 rdma_disconnect() 返回之后进入?
最佳答案
接收将在 rdma_disconnect() 返回后异步(可能)完成(带有“刷新错误”状态)。正如您从 rdma_disconnect() 的源代码中看到的那样,它所做的只是将 QP 转换为错误状态并向另一端发送断开连接请求。
将 QP 转换为错误状态确实保证所有发布到 QP 的待处理工作请求将以错误状态完成,但修改 QP 操作会立即返回,而无需等待队列耗尽。类似地,rdma_disconnect() 不会等待所有待处理的工作请求完成——事实上,很难看出它是如何做到的,因为 RDMA CM 实际上没有任何方法知道有多少工作请求在排队,让单独查看相关的 CQ 以查看它们何时全部完成。
IB 规范第 1 卷第 10 章详细介绍了工作请求处理,如果您想知道在转换到错误状态时正在处理的请求的极端情况等。
关于networking - 调用 rdma_disconnect() 后同步或异步返回的已发布接收缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761476/
调用 rdma_disconnect() 时,我是在 rdma_disconnect() 返回之前获得所有已发布的 recv 工作请求的完成队列事件,还是我应该期望它们在 rdma_disconnec
我是一名优秀的程序员,十分优秀!