Advertisement

C Linux Socket select多路复用

阅读量:

文章目录

  • 引言
    • 一、同步(Sync)与异步(Async),阻塞(Block)与非阻塞(Unblock)

    • 二、select 多路复用技术

      • 1、select() 函数的使用
      • 2、FD_ZERO() 宏的作用
      • 3、FD_SET() 宏的功能
      • 4、FD_CLR() 宏的用途
      • 5、FD_ISSET() 宏的应用
    • 三、代码实现与程序简要分析

      • 1、具体的代码实现
      • 2、对程序的初步解析
    • 四、运行结果展示

    • 总结部分


前言

在完成对多进程与多线程机制的学习后,可以发现,当面对多个并发连接请求时,多进程或多线程模型通常需要为每一个连接单独创建一个进程或线程。然而,在这些进程中,大多数都会处于阻塞状态。假设服务器端需要同时连接1000个客户端,那么就需要生成1000个进程或线程。即便不考虑进程或线程之间切换所需的时间片,仅是创建如此数量的进程或线程本身,就已经消耗了大量系统资源。

相比之下,采用I/O多路复用技术时,处理多个连接仅需通过一个线程来监控各个连接的就绪状态。这种方式显著降低了所需的线程数量,从而有效减少了内存占用以及因上下文切换带来的CPU开销。


本文首先将对select、poll、epoll这三种I/O多

全部评论 (0)

还没有任何评论哟~