Linux下的简单web服务器

一、概述

使用线程池,半同步/半反应堆并发模式。

同步线程:工作线程竞争执行任务

异步线程:主线程负责接受连接请求,执行读写,并在读后将解析任务添加到任务队列中。

二、设计逻辑

1.设计线程池的创建逻辑

2.主线程负责:

  • 监听连接事件。处理:接受连接
  • 监听读事件。处理:成功读则将任务添加至任务队列(注意加锁)
  • 监听写事件。处理:根据写函数返回值判断是否关闭连接

3.工作线程负责:

  • 创建后进入睡眠状态,循环查询任务队列
  • 当任务队列不为空时,执行任务(使用逻辑处理类的处理函数)(注意加锁)

4.设计逻辑处理类的事件处理函数

  • 读取并解析数据,根据读取结果向客户端返回相应的内容

5.设计主函数

三、代码逻辑

1.创建并初始化线程池

2.创建网络连接socket并监听之

3.循环监听连接事件

  • 有连接事件则接受之
  • 有读事件(客户端发来的请求)则读之并根据读的结果决定是否将任务添加到任务队列
  • 有写事件(逻辑处理类向客户端返回的内容)则根据写之并根据结果决定是否关闭连接

(注意修改注册事件列表)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值