IOCP中的一个由线程引起的怪现象
IOCP开2个工作线程(用GetQueuedCompletionStatus),开1个看守线程(用WaitForSingleObject等待FD_ACCEPT的触发产生若干AcceptEx)。
当我关闭看守线程的时候,会在工作线程中捕捉到 GetQueuedCompletionStatus为false/GetLastError为995的异常若干次(有时2次,有时3次),
这时,我跟踪到的key是关联于主ListenSocket的,而IO中的伴随Socket则是未使用过的且不固定。
我测试的时候,客户端只是连接着、没有发送数据。
另,还有一个问题,如果有3个PostQueuedCompletionStatus是在某一个线程中(比如:主线程)一个接一个的抛出的,比如:Post A, Post B, Post C;
那么,工作线程中的GetQueuedCompletionStatus接收到的也是顺序的吗?(当然,这时假定工作线程只有1个)