Linux下的简单web服务器

一、概述

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

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

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

二、设计逻辑

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

2.主线程负责:

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

3.工作线程负责:

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

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

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

5.设计主函数

三、代码逻辑

1.创建并初始化线程池

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

3.循环监听连接事件

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

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

你可能感兴趣的:(Linux,C++网络编程笔记,服务器,linux)