Asynchronous Execution Mode
Many XTI/TLI library routines block to wait for an incoming event. However, some time-critical applications should not block for any reason. An application can do local processing while waiting for some asynchronous XTI/TLI event.
Applications can access asynchronous processing of XTI/TLI
events through the combination of asynchronous features and the
non-blocking mode of XTI/TLI library routines. See the
ONC+ RPC Developer’s Guide for information about use of the
poll
()
system call and the
I_SETSIG
ioctl
()
ioctl
(2) command to process events asynchronously.
You can run each XTI/TLI routine that blocks for an event in a special
non-blocking mode. For example, t_listen
()
normally blocks for a
connect request. A server can periodically poll a transport endpoint for queued connect
requests by calling t_listen
()
in the non-blocking (or asynchronous)
mode. For more information, see the
t_listen
(3C) man page. You enable the asynchronous mode by setting
O_NDELAY
or O_NONBLOCK
in the file descriptor.
Set these modes as a flag through t_open
(), or by calling
fcntl
()
before calling the XTI/TLI routine. Use
fcntl
()
to enable or disable this mode at any time. All program
examples in this chapter use the default synchronous processing mode. For more
information, see the
t_open
(3C) and
fcntl
(2) man pages.
Use of O_NDELAY
or O_NONBLOCK
affects each XTI/TLI routine differently. You need to determine
the exact semantics of O_NDELAY
or O_NONBLOCK
for a particular routine.