高分请教一个关于完成端口中套接字的关闭问题.
问题描述:
我的程序中使用完成端口关联了很多套接字,我想在另外一条线程中(非工作线程)关闭其中一个套接字上的连接的话,我发现会有问题的.当我在另一条线程中(比如叫线程a)关闭该套接字,并回收了该套接字的相关资源后,工作线程中的GetQueuedCompletionStatus()调用有时候还是能返回该套接字上的事件(比如连接的另一端不停发数据过来),而这个套接字刚才已经在线程a中已经被关闭了,所以再处理该事件就会有问题.
所以我想请教一下,如何主动关闭一个关联到完成端口的连接.非常感谢.
问题点数:100、回复次数:4Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-03-03 22:33:34 得分 25
应该等尚未完成的IO完成再清理相应的资源!Top
2 楼alwaysakid(老A)回复于 2006-03-12 03:57:20 得分 25
继续接收到的事件是在socket关闭之前已经触发的,
最简单的方法是把关闭的命令封装后投递到完成端口,由Get的那个线程执行
系统保证投递是有序的Top
3 楼sdf123321()回复于 2006-03-31 22:25:10 得分 25
postPostQueueCompletionStatusTop
4 楼honghaier(红孩儿)回复于 2006-04-14 10:01:16 得分 25
按楼上的函数调用进行关闭Top




