
网络编程
文章平均质量分 65
新手学习,欢迎大佬指出问题
我也被困在雨天里
这个作者很懒,什么都没留下…
展开
-
qps测试epoll和io_uring
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 我们可以写一个客户端的代码,分别对epoll实现的Reactor服务器和io_uring实现的Proactor服务器进行测试。客户端大致流程:对服务端发起请求到接收到服务器回发的数据,统计期间的时间。通过上述测试,可以大致看出io_uring实现的异步Proactor性能的qps比epoll实现的同步Reactor性能要好。原创 2024-08-24 08:26:24 · 581 阅读 · 0 评论 -
io_uring实现Proactor
上一次我们用epoll实现了reactor模式,这一次我们用io_uring来实现Proactor模式的tcp服务器。我们已经可以达到用一个线程去处理大量的连接。但此时这个线程每处理一个I/O,线程会一直等待(就是我们常说的阻塞I/O或者同步I/O下边有解释),是不是有点傻瓜?是否可以让线程多工作,别傻傻的等待。当然可以!这就是今天我们所要介绍的目前常用的Proactor模式。:I/O操作按照顺序执行,并且每一步都需要等待上一步完成。原创 2024-08-18 17:22:21 · 1011 阅读 · 0 评论 -
C语言实现Reactor
在前边的C语言实现简易tcp服务器中,我们实现服务器是采用了最笨拙的方法,就是每来一个客户端,我们就创建一个线程进行连接处理。试想如果有10w个客户端来,就需要10w个线程,需要创建大量的线程,耗费大量的资源,并且为了保证线程安全,还需要考虑锁,死锁等问题,这些都需要一定的开销。因此为了解决这个问题,我们下一篇介绍了select、poll、epoll,他们三个是常用的I/O多路复用机制。解决了创建大量的线程的问题。用一个线程就可以去处理多个客户端连接的问题。那么问题来了,性能是否还能继续优化?原创 2024-08-18 17:16:51 · 363 阅读 · 0 评论 -
select、poll、epoll
select是Linux中常用的多路复用IO机制,它允许程序同时监控多个文件描述符(可以是套接字socket,也可以是普通文件)的读、写和异常事件。//参数://maxfd:监视对象文件描述符数量。//readset:将所有关注“是否存在待读取数据”的文件描述符注册到fd_set变量,并传递其地址值。//writeset: 将所有关注“是否可传输无阻塞数据”的文件描述符注册到fd_set变量,并传递其地址值。原创 2024-08-03 20:16:32 · 450 阅读 · 0 评论 -
C语言实现简易tcp服务器
用网络调试助手模拟多个客户端,实现的tcp服务器功能:客户端发送什么数据,再转发回去。代码采用一个客户请求创建一个线程进行处理的方式。才看完tcp协议这一块,写这篇博客的目的主要是为了加深印象,把大致流程梳理下。原创 2024-07-30 21:58:59 · 341 阅读 · 0 评论