Messages in this thread | | | Date | Sat, 11 Sep 1999 21:26:47 -0700 | From | John Gardiner Myers <> | Subject | POSIX aio vs completion ports |
| |
Alan Cox wrote: > POSIX real time signal queues are effectively completion ports.
You must not have understood the post you were replying to. POSIX real time signal queues are inferior to completion ports in many ways.
* As far as I know, there is no way to allocate a POSIX real time signal number in a thread safe manner. There is no equivalent to the socket() system call--one must just pick a number and hope that no other thread in the same process just picked the same number.
* Chuck Lever informs me that the signal queue might overflow, leading to lost completion notifications. There is no reasonable way for an application to recover from such a condition.
* POSIX aio lacks a mechanism to request read polls. With completion ports, one may request an asynchronous read of 0 bytes--the completion is delivered when there is data to be read. Implementations of POSIX aio cause an aio_read() of 0 bytes to complete immediately, a useless semantic.
* POSIX aio lacks asynchronous versions of writev() and sendfile(). (Though the lack of an aio_writev() is made less important by TCP_CORK.)[unhandled content-type:application/x-pkcs7-signature]
| |