一、概述
使用线程池,半同步/半反应堆并发模式。
同步线程:工作线程竞争执行任务
异步线程:主线程负责接受连接请求,执行读写,并在读后将解析任务添加到任务队列中。
二、设计逻辑
1.设计线程池的创建逻辑
2.主线程负责:
- 监听连接事件。处理:接受连接
- 监听读事件。处理:成功读则将任务添加至任务队列(注意加锁)
- 监听写事件。处理:根据写函数返回值判断是否关闭连接
3.工作线程负责:
- 创建后进入睡眠状态,循环查询任务队列
- 当任务队列不为空时,执行任务(使用逻辑处理类的处理函数)(注意加锁)
4.设计逻辑处理类的事件处理函数
- 读取并解析数据,根据读取结果向客户端返回相应的内容
5.设计主函数
三、代码逻辑
1.创建并初始化线程池
2.创建网络连接socket并监听之
3.循环监听连接事件
- 有连接事件则接受之
- 有读事件(客户端发来的请求)则读之并根据读的结果决定是否将任务添加到任务队列
- 有写事件(逻辑处理类向客户端返回的内容)则根据写之并根据结果决定是否关闭连接
(注意修改注册事件列表)