关于数据服务总线代码的三个优化

来源:13-12 线程池的监控

weixin_慕娘0217928

2022-08-21

一、
图片描述
这里是数据库连接池类get()成员函数,红色部分是我添加的代码。
假设一次get()调用中,先找到了一个未连接好的位置,接下来继续遍历,找到了一个已连接好的位置,那么如果没有红色部分,就会直接取到这个已连接好的位置,那么之前我们找到的那个未连接好的位置的锁就永远没法解开了,被虚假占用,这是个大问题。
二、
图片描述
这里是线程主函数的结尾,红色部分是我添加的代码。
如果忘记了这个close,那么这个socket连接就会处于close_wait状态,占用服务器资源。
三、
图片描述
这里是ExecSQL()函数,红色部分是我更改的代码。
如果不加对于Write()的判断,那么假设以下情况:
客户端一次请求了大量数据,需要10s,但是到5s时,客户端等不及了,把连接给断开了,
这时由于我们没判断Write()的返回值,就会继续傻傻地读取完结果集才退出,浪费资源。

写回答

1回答

长歌_吴从周

2022-08-23

你说的这个问题我要重新看代码并测试。

我的代码有bug很正常,你明白其中的道理就可以了。

0
0

C/C++气象数据中心实战,手把手教你做工业级项目

通过技术的实际应用,掌握等同2年经验的技术能力

968 学习 · 401 问题

查看课程