让我们看看垃圾代码长什么样子

下面的代码实现连接数据库的功能,但是用的是全局函数实现。

函数也就罢了,里面的变量又用到了全局变量来访问数据库,由于多线程调用,所以还要支持多线程。

多线程访问全局变量就要支持并发,加临界区(或者说Guard)。

访问数据库又有可能出错,出错又要退出,退出又要在流程上处理错误处理,临界区控制更麻烦。

只要哪里写的不完备,你懂的,多线程临界区出了问题,多个线程的调用全局变量,这些线程就会像一把把锋利的匕首一样从你的四面向你刺来。你可能死都不知道是被谁弄死的。

让我们来看看这个超级烂的烂代码吧:

如何改进呢?

1 功能封装到class里

2 new的对象用类的普通成员变量表示(不是指针成员变量)

3 访问数据库的时候在线程内创建栈对象(这样不同的线程就会使用不同的栈对象,互不关联,免去了临界区那些个同步垃圾代码)

发布了506 篇原创文章 · 获赞 199 · 访问量 117万+

猜你喜欢

转载自blog.csdn.net/ClamReason/article/details/104059794