Boost logo

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