非阻塞socket在recv函数内部等待时,接收缓冲区变为不可用,怎么解决? (100分,高手来)
瓦琦儿 2007-03-05 11:23:14 我在主线程里HeapCreate
然后每个工作线程里HeapAlloc作为该线程里SOCKET的recv缓冲区
当某个工作线程recv到特定数据时,我的程序的任务就完成了。
由于非阻塞socket的缘故,这时其他线程可能还在recv函数内部。
如果这个时候调用HeapDestroy,那么,当recv函数返回的时候,程序就会出现非法操作。
程序没有时间,不能无限制等待其他线程recv函数返回再HeapDestroy;由于频繁CreateThread,最好不用TerminateThread来结束所有线程。
请问,有什么办法能够保证,在不无限制等待的情况下,所有socket的recv在HeapDestroy之前返回。