使用信号实现TCP / IP套接字客户端服务器是一个好主意吗?

时间:2011-11-08 13:51:17

标签: performance sockets posix signals

为了澄清,我想知道使用TCP / IP套接字和响应“可读/可写”信号条件调用的信号处理程序将“多个同时客户端写入单个服务器”的缺点和优点在客户端套接字文件描述符?据我所知,至少Linux内核使用信号来通知进程与套接字描述符相关的条件?显然,在信号处理程序中必须要小心,正如我所理解的那样,它会中断进程 - 重入性,原子性,变量的未定义状态等等。

但是一个人没有信号做大多数工作,实际上恰恰相反 - 将套接字添加到一组准备好阅读,写作的套接字,就像selectpoll和{ {1}}做,并让默认的流程代码流适用于这些集合?实际上,一个模仿与上述功能相同的模式,但纯粹主要是,它是否可行,它是如何值得的?

1 个答案:

答案 0 :(得分:2)

已经有几种这样的方法。一个是使用SIGIO信号,检查man 7 socket并查找名为“信号”的部分以获取更多信息。

另一种方法由POSIX标准化并称为异步I / O.要使用的函数都以aio_为前缀(例如aio_read)。有关如何使用此示例的示例,请参阅this链接或查看manual page