|
Boost : |
From: scleary_at_[hidden]
Date: 2001-07-31 07:58:45
> The closest match in Windows would be to use i/o completion ports.
> It's inextricably linked to threading, but completion routines work
> for both socket and file operations (and perhaps others as well --
> you can explicitly signal an operation as complete) and are quite
> similar to poll(). In addition, they remove the 64 event limitation
> of WSAWaitForMultipleEvents.
I/O completion ports are only available on NT. I/O completion routines (a
type of Overlapped operation) do work well, but some asynchronous
capabilities (such as host name lookup) only support Win32 Messages.
> Still, this is a far cry from BSD sockets. Settling on a portable
> interface might be difficult... but if the library is buit on select
> () no Windows programmers may use it (I probably wouldn't).
As has been noted, a portable interface for blocking calls would be easy.
But I'd like to see us tackle the asynchronous version if possible. I agree
with your statement that Win32 programmers will reject any select()-based
solution; it's in WinSock only to ease porting Unix apps.
There's also some differences in the logic between select() and Overlapped
completion notification (whether through I/O completion routines OR
WSAWaitForMultipleEvents): in general, Overlapped tells you when an
operation has completed; select() tells you when an operation may begin.
Win32 programmers will prefer the Overlapped logic.
-Steve
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk