NOWAIT I/O requires an application
to "poll" to see if the requested I/O
has completed.
Each time the check is made, there is some
overhead, whether the I/O has completed or not.
The application
is faced with a difficult trade-off.
The more often the application polls, the greater the
overhead, and the poorer its overall performance becomes.
If it polls less
frequently, this increases the delay
between when the I/O can complete and
when the application completes it, thus reducing performance.
One solution to this dilemma is to use software
interrupts.
When software interrupts are enabled, MPE/iX signals the
application when to complete the I/O. There is no need for
repeated polling; the application completes the
I/O only when signaled, so the I/O always completes on the
first try.
Software interrupts are a special case of NOWAIT I/O.
The difference is that
MPE/iX interrupts the process when the I/O can be
completed;
the process does not need to poll to determine whether the
I/O can be completed.
Most
of the discussion about NOWAIT I/O
also applies to software interrupts.
Like NOWAIT I/O,
a call to IOWAIT or IODONTWAIT is needed to complete
an I/O request.