编程接口指南

异步执行模式

许多 XTI/TLI 库例程会阻塞以等待传入事件。但是,无论出于何种原因,都不应阻塞某些时间关键应用程序。应用程序可以在等待某些异步 XTI/TLI 事件时进行本地处理。

应用程序可以通过组合异步功能和 XTI/TLI 库例程的非阻塞模式来访问 XTI/TLI 事件的异步处理。有关使用 poll(2) 系统调用和 I_SETSIG ioctl(2) 命令来异步处理事件的信息,请参见《ONC+ Developer’s Guide》

可以在特定的非阻塞模式中运行每个由于某个事件而阻塞的 XTI/TLI 例程。例如,t_listen(3NSL) 通常会由于连接请求而阻塞。服务器通过在非阻塞(或异步)模式中调用 t_listen(3NSL),可以定期针对已排队的连接请求轮询传输端点。可通过在文件描述符中设置 O_NDELAYO_NONBLOCK 来启用异步模式。在调用 XTI/TLI 例程之前,借助 t_open(3NSL) 或者通过调用 fcntl(2) 将这些模式设置为标志。使用 fcntl(2) 可随时启用或禁用该模式。本章中的所有程序示例都使用缺省的同步处理模式。

使用 O_NDELAYO_NONBLOCK 会以不同方式影响每个 XTI/TLI 例程。需要针对特定例程确定 O_NDELAYO_NONBLOCK 的确切语义。