设置cpp-httplib 服务器模式模式下的线程池大小 以及如何增加默认处理函数 以便能够实现http请求转发

先说说默认的创建的线程池数量 

原因是某天调试在gdb调试下 一启动程序发现 开启了好多线程 如下图

因为我们程序 没几个线程 数了下 居然有60多个线程 

不需要那么多 所以看下 httplib的源码

 构造函数的时候 设置了最大线程池数量 看下这个宏

 然后打印了下 发现

 

居然那么大  后来 cat /proc/cpuinfo 

 果真有 64个线程数

查了下这个cpu型号

 32线程  后来发现 这个服务器有两块cpu 难怪 

直接修改这个宏的值就可以了 

我改为 2  再GDB跑一下程序 发现 就ok了 

 

httplib中需要为每一个uri增加一个handler

如果没有的话就会返回false未处理 

但是如果设想如果有这么一种需求 需要转发这个http消息 

这个时候就没法处理了吧  毕竟我们不知道 别人会把uri写成什么样子 

httplib默认没办法处理这种情况  

通过 阅读httplib源码 发现 给程序增加一个默认处理函数即可

如下图 routing函数里面 会走到dispath_request函数 然后去get_handlers_ 或者post_handlers_

这个handler通过查看定义实际上是一个vector

服务端刚起来的时候我们设置的 各种处理就是保存到 这个handler里面

然后当客户端有请求的时候 去 这个vector里面去找  如下

默认的方式如下 通过正则表达式匹配字符串  我们只需要增加找不到的时候 都给他重定向到默认的handler

 修改为如下方式

当然程序中得增加这个/默认的处理hanndler

 

然后 我们在浏览器中随便输入一个get请求

或者用postman模拟一个post请求

程序中打印如下

 

这样如果我们想做转发的话 就可以直接在 这个默认的handler里 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QMCY_jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值