select
、poll
、epoll
属于 IO多路复用 技术,和 C++ 的多线程机制之间有一定联系,但它们的用途和原理是不同的,
下面来详细对比它们的关系与区别。
🌟 一句话总结区别:
-
std::thread
等是“多线程”编程方式,强调“同时执行多个任务”。 -
select/poll/epoll
是“IO多路复用”机制,强调“一个线程同时等待多个IO事件”。
一、select / poll / epoll 是什么?
这些都是 Linux/UNIX 下的 系统调用,用于单线程中同时监听多个文件描述符的 IO 状态(如 socket 是否可读写),主要用于网络编程中。
名称 | 特点 | 使用场景 |
---|---|---|
select | 最老的方式,效率低,有最大fd限制 | 简单程序测试,老系统 |
poll |