关于数据服务总线代码的三个优化
来源:13-12 线程池的监控

weixin_慕娘0217928
2022-08-21
一、
这里是数据库连接池类get()成员函数,红色部分是我添加的代码。
假设一次get()调用中,先找到了一个未连接好的位置,接下来继续遍历,找到了一个已连接好的位置,那么如果没有红色部分,就会直接取到这个已连接好的位置,那么之前我们找到的那个未连接好的位置的锁就永远没法解开了,被虚假占用,这是个大问题。
二、
这里是线程主函数的结尾,红色部分是我添加的代码。
如果忘记了这个close,那么这个socket连接就会处于close_wait状态,占用服务器资源。
三、
这里是ExecSQL()函数,红色部分是我更改的代码。
如果不加对于Write()的判断,那么假设以下情况:
客户端一次请求了大量数据,需要10s,但是到5s时,客户端等不及了,把连接给断开了,
这时由于我们没判断Write()的返回值,就会继续傻傻地读取完结果集才退出,浪费资源。
写回答
1回答
-
长歌_吴从周
2022-08-23
你说的这个问题我要重新看代码并测试。
我的代码有bug很正常,你明白其中的道理就可以了。
00
相似问题