💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 传统阻塞式I/O 应用进程(线程)被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回,在阻塞的过程中,不消耗 CPU 时间 下图中,recvfrom() 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用 ~~~ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ~~~ ![](https://img.kancloud.cn/92/9c/929ccfa3bf72bfbfb065ae2ff848340d_704x399.png) ### 传统阻塞IO的应用模型 ![](https://img.kancloud.cn/07/f9/07f9df505dead362d2ef7d9ce9a33ade_683x629.png) 特点: 1)采用阻塞式 I/O 模型获取输入数据; 2)每个连接都需要独立的线程完成数据输入,业务处理,数据返回的完整操作。 存在问题: 1)当并发数较大时,需要创建大量线程来处理连接,系统资源占用较大;而且系统线程资源是有限的; 2)连接建立后,如果当前线程暂时没有数据可读,则线程就阻塞在 Read 操作上,造成线程资源浪费;