C++网络编程实战项目--Sinetlib网络库(4)——线程池和整体框架

本文介绍了C++网络编程项目Sinetlib中的线程池和Reactor模式应用。主线程负责监听socket,新连接由主线程接受并分配给线程池中的工作线程处理。Connection类抽象了TCP连接,包含状态回调和缓冲区。Server类作为库的顶层,管理连接的生命周期,采用他杀方式优雅地销毁Connection对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程池

我们已经有了一个Looper类表示事件循环,且每个线程只能有一个Looper,现在我们把Looper和线程绑定在一起,成为一个新的类LooperThread

创建该类也就创建了一条新线程,然后该线程上运行着Looper。我们把这些线程都交由线程池管理,也就是ThreadPool

Reactor

实际上这并不是纯粹的Reactor模式,更应该称之为半同步半异步模式。
我们有一个主线程以及线程池中的N个线程,主线程只负责监听socket,所有的connect请求都有主线程处理。当有新连接到来时,主线程接受并建立连接。
在这里插入图片描述

连接建立后,主线程会从线程池中选择一个线程,将连接分配给该线程,以后该连接上的所有请求都只有该线程处理。
在这里插入图片描述

抽象连接Connection

为了方便管理,我们把TCP连接抽象成一个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值