I think the DeveloperWorks article you've cited is simply wrong, and that's sent you into a tailspin. Select and poll aren't "ways to implement asynchronous blocking I/O".
I think you'll find these links more helpful than the misleading one you've been using.
I think you'll find these links more helpful than the misleading one you've been using.
http://www.circlemud.org/~jelson/software/fusd/docs/node36.h...
http://people.freebsd.org/~hmp/stuff/docs/freebsd_kse.pdf
I could always be wrong about this stuff; maybe I'm the one with the broken semantics. But I'm pretty sure I'm not.