多路复用是一种提高 I/O 操作效率的机制,它允许一个进程同时监视多个文件描述符。在 Linux 中,select 和 epoll 是常用的多路复用机制。它们可以用于处理多个套接字的并发事件,提高网络应用程序的性能。
<p>// 使用 select 示例</p><p>#include <sys/select.h></p><p>#include <iostream></p><p>
</p><p>int main() {</p><p> fd_set readfds;</p><p> FD_ZERO(&readfds);</p><p> FD_SET(STDIN_FILENO, &readfds);</p><p>
</p><p> struct timeval timeout;</p><p> timeout.tv_sec = 5;</p><p> timeout.tv_usec = 0;</p><p>
</p><p> int result = select(STDIN_FILENO + 1, &readfds, NULL, NULL, &timeout);</p><p>
</p><p> if (result > 0 && FD_ISSET(STDIN_FILENO, &readfds)) {</p><p> std::cout << "Data is available to read from stdin." << std::endl;</p><p> } else if (result == 0) {</p><p> std::cout << "Timeout occurred." << std::endl;</p><p> } else {</p><p> std::cerr << "Error in select." << std::endl;</p><p> }</p><p>
</p><p> return 0;</p><p>}</p>
|