多个线程同时发起多个接受调用的问题

cppabc 2018-05-31 04:38:08
有个问题想和大家讨论下,在iocp编程模型中,如果有多个IO线程,其中一个线程一次投递多个recv操作那等到有数据到达时应该是只有次线程在getcopstats中会返回吧,也就是相应的投递通知只能相应的发送请求的线程得到通知
...全文
1403 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cppabc 2018-06-01
  • 打赏
  • 举报
回复
各位大牛能回答下这个问题吗
cppabc 2018-05-31
  • 打赏
  • 举报
回复
有个问题想和大家讨论下,在iocp编程模型中,如果有多个IO线程,其中一个线程一次投递多个recv操作那等到有数据到达时应该是只有发送相应投递调用的线程在getcopstats中会返回吧(即使另一个线程也做了相同的操作),也就是相应的投递通知只能相应的发送请求的线程得到通知,比如A线程发送投递接受对方的前10k的数据此时另一个线程在同一个套接字上再发送接受发送者后15k数据的recv调用(假设A线程先投递完成,B线程后投递完成,且都处于pend状态),那等完成队列中有数据后第一个先满足A线程的请求,即使只有少于10k的数据到达。然后A getcmplestats返回,紧接着投递下一个recv,此时线程B的recv请求还没有收到数据。等过一会后有数据了,此时在调用getcompletionstates的A B两个线程只有B才能收到数据并返回,即使此时A是在运行中的状态。我的理解没问题吧

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧