1。用完成例程能不能只要WorkerRoutine,不要WSAWaitForMultipleEvents?
2。WorkerRoutine和SAWaitForMultipleEvents能不能分开放在不同的线程中?

解决方案 »

  1.   

    1.完成例程可不用WSAWaitForMultipleEvents,用SleepEx(DWORD dwMilliseconds,BOOL bAlertable)代替,dwMilliseconds为超时时间,以毫秒为单位,bAlertable一般设为TRUE,
      

  2.   

    这几天一直在想这个问题,头都大了,先谢谢你帅帅鱼。
    我的意思是想在调用完WorkerRoutine后不用任何等待就继续去运行下一个wsarecv,如果用WSAWaitForMultipleEvents和sleepex等函数的话就要有等待时间,不能继续进行。
    我把WSAWaitForMultipleEvents函数去掉后会出现997错误。调试后发现运行完WorkerRoutine函数这个线程就一直处于等待状态了。能不能删除当前的APC?
      

  3.   

    使用SleepEx(). 这个函数就是等待一个IO完成的.
    调用closesocket()相应的SOCKET操作都立即中止的.
      

  4.   

    我的意思是想在调用完WorkerRoutine后不用任何等待就继续去运行下一个wsarecv
    //=================
    你怎么知道一个wsarecv会成功?
    如果是数据大,你可以不停的wsarecv
      

  5.   

    我有一个缓存,WorkerRoutine是会吧信息保存在缓存中,我在另外一个线程中处理返回值和数据,这个线程只做接收。主要一个问题是运行完WorkerRoutine必须要运行一个sleepex(而sleepex妨碍了我下面的工作),要不程序就停止了,我想能不能不要那个sleepex。