|
Boost : |
From: Christopher Kohlhoff (chris_at_[hidden])
Date: 2006-11-17 07:02:23
berserker_r <berserker_r_at_[hidden]> wrote:
> I'm using 0.3.7 with boost 1.33.1.
Try this change to win_iocp_io_service.hpp in addition to
the previous patch:
@@ -125,10 +125,13 @@
#endif
LPOVERLAPPED overlapped = 0;
::SetLastError(0);
- ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
- &completion_key, &overlapped, INFINITE);
+ BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle,
+ &bytes_transferred, &completion_key, &overlapped, 1000);
DWORD last_error = ::GetLastError();
+ if (!ok && overlapped == 0 && last_error == WAIT_TIMEOUT)
+ continue;
+
if (overlapped)
{
// We may have been passed a last_error value in the completion_key.
Note that I haven't tested that it even compiles.
Cheers,
Chris
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk