1. 我想投递WSARecv,不在IO县城里面投递,我想了另外开个线程直接WSARecv,也可以使用PostCompletionStatus切进IO线程里面投递,我知道使用PostCompletionStatus投递多次的时候,虽然顺序可能会不对,但是在io线程里面和不在里面效率是一样吗?2. 投递的WSARecv..冲击分页内存锁定极限和非分页内存极限,导致一个错误,似乎是NOBUF,我不解是投递的数量是相对于所有的投递数量,还是每一个socket只是计算一个投递的数量。如:我有200个sockClient, 我每一个socket投递了5个WSARecv,系统计算的时候是计算1000个,还是200个啊...在线刷新,waiting...

解决方案 »

  1.   

    1、I/O请求本来就可以在任何线程中投递,没事不要用PostCompletionStatus,这个一般是程序结束前需要结束所有线程时,用来唤醒处理IOCP的线程让其自行结束的。2、不大明白是什么情况,投递多少次就有多少异步I/O操作待完成。
      

  2.   

    谢谢 上面2位,您们的回复对我很有帮助。投递的多了会导致页面锁问题,有人提议投递零缓冲的buf,就是len=0,只有用吗?如:投递20000个WSARecv出错了,即使每一个socket投递WSARecv之前先投递一个零缓冲的WSARecv,这样真的可以避免错误吗?
    感觉没有作用啊...
      

  3.   

    "页面锁"  老实说 这玩儿 还没听说过!    O(O(∩_∩)O哈哈
     但是 我以前对一个socket多次WSARecv投递 没出问题! 一般来说 没必要对一个socket 投递那么多啊!