我在主线程里HeapCreate
然后每个工作线程里HeapAlloc作为该线程里SOCKET的recv缓冲区当某个工作线程recv到特定数据时,我的程序的任务就完成了。由于非阻塞socket的缘故,这时其他线程可能还在recv函数内部。如果这个时候调用HeapDestroy,那么,当recv函数返回的时候,程序就会出现非法操作。程序没有时间,不能无限制等待其他线程recv函数返回再HeapDestroy;由于频繁CreateThread,最好不用TerminateThread来结束所有线程。请问,有什么办法能够保证,在不无限制等待的情况下,所有socket的recv在HeapDestroy之前返回。
然后每个工作线程里HeapAlloc作为该线程里SOCKET的recv缓冲区当某个工作线程recv到特定数据时,我的程序的任务就完成了。由于非阻塞socket的缘故,这时其他线程可能还在recv函数内部。如果这个时候调用HeapDestroy,那么,当recv函数返回的时候,程序就会出现非法操作。程序没有时间,不能无限制等待其他线程recv函数返回再HeapDestroy;由于频繁CreateThread,最好不用TerminateThread来结束所有线程。请问,有什么办法能够保证,在不无限制等待的情况下,所有socket的recv在HeapDestroy之前返回。
解决方案 »
- 重叠IO
- 急!用CHttpConnection等MFC封装的WinINet类,下载网站文件时无法正确识别URL所包含的文件名及类型.
- 急,关于对话框程序退出后任务管理器进程中还能看到该对话框程序exe还未结束退出的问题?
- 关于连接点的问题,advise返回E_NOTIMPL
- 粘贴动作完成后,有没有什么消息发送?
- 数值转换
- 如何获取EditBox中输入的数据!
- CMap全部检索一遍怎么会这么慢?
- 高分求助,数据库表中添加记录时得奇怪问题
- 请问怎样查看CView::OnUpdate()函数的源代码
- 请问如何 动态改变 edit控件 Disabled 后的字体颜色????
- dcom 配置 RPC服务器不可用
这种情况下,应该考虑内存池.
每个线程只是使用内存,使用完了后把它标记为可用就行.
由于频繁CreateThread?为何需要频繁CreateThread?
由于频繁CreateThread?为何需要频繁CreateThread?
--------------------------------------------------------------
vc.net技术内幕里是这样干的,好像,貌似,记不清了