【发布时间】:2013-09-19 16:33:58
【问题描述】:
我正在阅读一本关于 C 语言网络编程的书。它是 2004 年的。 在示例代码中,作者使用 select C 函数来接受来自客户端的多个连接。该功能今天已弃用吗?
我发现接受多路 I/O 的方式有很多种,例如 poll 和 epoll。有什么优势?
【问题讨论】:
-
是什么让您认为
select()已被弃用?它仍然在最新的 POSIX 规范中定义。 -
我也想知道。 linux下的select仅限于监控前1024个文件描述符,即使只有一个描述符要监控等于或大于1024也确实会出错。由于线程使用文件描述符在所有线程之间共享,那么什么是专用的现在为同一进程中的所有线程累积处理。将 select 与需要处理超过 1024 个连接的程序一起使用需要使用分叉进程而不是使用线程。
标签: c io posix-select