I'm looking for some way to get a signal on an I/O completion port when a socket becomes readable/writeable (i.e. the next send/recv will complete immediately). Basically I want an overlapped version of WSASelect
.
(Yes, I know that for many applications, this is unnecessary, and you can just keep issuing overlapped send
calls. But in other applications you want to delay generating the message to send until the last moment possible, as discussed e.g. here. In these cases it's useful to do (a) wait for socket to be writeable, (b) generate the next message, (c) send the next message.)
So far the best solution I've been able to come up with is to spawn a thread just to call select
and then PostQueuedCompletionStatus
, which is awful and not particularly scalable... is there any better way?