多线程操作指南
分类:C++
通常来说,我们将后端逻辑做成动态链接库,前端界面做成可执行程序,这样有以下几个好处:
- 不同功能代码的分离,利于更新和维护
- 程序启动不用加载所有的代码块,可以快速启动程序
- 更加方便地实现多线程操作不同的数据
这里就引出了多线程的问题。同时也是今天调试了很久的一个问题。
对于后台不同的数据,如果没有前后逻辑关系,使用多线程会加快程序的执行速度。最常用的就是将前台界面作为主线程,后台数据作为子线程,这样前端显示不会受到后端数据运算慢的限制(不会阻塞)。
但是值得注意的问题是,子线程尽量不要操作同一数据(如果实在要操作,需要加锁),尤其是全局变量和静态函数(多个线程同时操作)。
多线程的bug是很难调试的,如果遇到可以查看并行堆栈,是哪个线程导致的程序崩溃。
如果有收获,可以请我喝杯咖啡!