Message148158
| Author |
pitrou |
| Recipients |
brian.curtin, jnoller, pitrou, python-dev, sbt, tim.golden |
| Date |
2011年11月23日.00:03:24 |
| SpamBayes Score |
1.6723179e-07 |
| Marked as misclassified |
No |
| Message-id |
<1322005661.3267.3.camel@localhost.localdomain> |
| In-reply-to |
<1321814465.51.0.759877323291.issue12328@psf.upfronthosting.co.za> |
| Content |
> Here is an updated patch (pipe_poll_fix.patch) which should be applied
> on top of sigint_event.patch.
>
> It fixes the problems with PipeConnection.poll() and Queue.empty() and
> makes PipeListener.accept() use overlapped I/O. This should make all
> the pipe releated blocking functions/methods interruptible on Windows.
I have the feeling that if we have to call GetLastError() at the Python
level, then there's something wrong with the APIs we're exposing from
the C extension.
I see you check for ERROR_OPERATION_ABORTED. Is there any situation
where this can happen?
Also, it seems strange to call ov.cancel() and then
ov.GetOverlappedResult(). AFAICT, those two operations should be
mutually exclusive: you call the former if e.g. WaitForMultipleObjects
raised an exception, the latter otherwise. |
|