day02 高并发性能优化,IO多路复用是关键因素吗?

2026-05-06 03:090阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3966个文字,预计阅读时间需要16分钟。

day02 高并发性能优化,IO多路复用是关键因素吗?

《C++高性能网络服务保级级教程+首发地址+day02+真正的高并发还得看IO多路复用+本次目标+使用epoll实现一个高并发的服务器+从单进程讲起+上一节从一个基础的socket服务说起,我们实现了一个简单的服务端程序。》

教程说明

C++高性能网络服务保姆级教程

首发地址

day02 真正的高并发还得看IO多路复用

本节目的

使用epoll实现一个高并发的服务器

从单进程讲起

上节从一个基础的socket服务说起我们实现了一个基本的socket服务器,并留了个思考题

先启动server,然后启动一个client,不输入数据,这个时候在另外一个终端上再启动一个client,并在第二个client终端中输入数据,会发生什么呢?

实际操作后,我们会发现,在第二个client输入后,服务端并没有响应,直到第一个client也输入数据完成交互后,第二个client才会有数据返回。

这是由于服务端accept获取到第一个client的套接字后,由于第一个client未输入数据,所以服务端进程会阻塞在等待客户端数据那一行。

... int read_num = read(accept_fd, read_msg, 100); ...

所以,第二个client完成三次握手后,连接一直在服务端的全连接队列中,等待accept获取处理。

多线程,一个线程一个连接

后续的client无法得到处理是由于服务端只有一个线程,获取client套接字还有连接通信全在一个线程中。

阅读全文

本文共计3966个文字,预计阅读时间需要16分钟。

day02 高并发性能优化,IO多路复用是关键因素吗?

《C++高性能网络服务保级级教程+首发地址+day02+真正的高并发还得看IO多路复用+本次目标+使用epoll实现一个高并发的服务器+从单进程讲起+上一节从一个基础的socket服务说起,我们实现了一个简单的服务端程序。》

教程说明

C++高性能网络服务保姆级教程

首发地址

day02 真正的高并发还得看IO多路复用

本节目的

使用epoll实现一个高并发的服务器

从单进程讲起

上节从一个基础的socket服务说起我们实现了一个基本的socket服务器,并留了个思考题

先启动server,然后启动一个client,不输入数据,这个时候在另外一个终端上再启动一个client,并在第二个client终端中输入数据,会发生什么呢?

实际操作后,我们会发现,在第二个client输入后,服务端并没有响应,直到第一个client也输入数据完成交互后,第二个client才会有数据返回。

这是由于服务端accept获取到第一个client的套接字后,由于第一个client未输入数据,所以服务端进程会阻塞在等待客户端数据那一行。

... int read_num = read(accept_fd, read_msg, 100); ...

所以,第二个client完成三次握手后,连接一直在服务端的全连接队列中,等待accept获取处理。

多线程,一个线程一个连接

后续的client无法得到处理是由于服务端只有一个线程,获取client套接字还有连接通信全在一个线程中。

阅读全文