c++高并发tcp网络服务器实例渐进式教程-04

本篇博客介绍了如何在C++中改进TCP服务器,以实现更高的并发性能。通过使用任务队列,将主线程负责监听新连接,子线程处理客户端交互,从而减少线程开销。文中详细阐述了服务端编码、编译运行过程,以及客户端的使用。尽管此设计提高了并发性,但主线程和子线程间的线程锁在高并发环境下仍存在瓶颈,作者指出下一步计划使用非阻塞IO优化服务器设计。
摘要由CSDN通过智能技术生成

古代TCP服务器


上节我们介绍了一个多任务的TCP服务器,但是每个任务都会创建一个线程,系统的线程承载量是不高的,大几十个线程就可能压垮系统,这样无法实现我们高并发高性能TCP服务器的目标。

这节内容我们继续在上一节的基础上改进我们的服务器。既然每个任务不能单独占用一个线程,那可以把所有响应任务放到单独一个子线程中处理,主线程只负责监听新的客户端连接,并把新的连接下放的子线程中处理。

那主线程和子线程怎样交互呢?

答案是添加一个任务队列,主线程把已经建立的连接放入任务队列中,子线程循环遍历任务队列,有连接存在就执行客户端以服务的数据交互。没有任务就继续循环。主线程相当于生产者,子线程相当于消费者。如下图所示:

一 服务端编码

//server3.cpp
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值