通常来说,我们将后端逻辑做成动态链接库,前端界面做成可执行程序,这样有以下几个好处:

  1. 不同功能代码的分离,利于更新和维护
  2. 程序启动不用加载所有的代码块,可以快速启动程序
  3. 更加方便地实现多线程操作不同的数据

这里就引出了多线程的问题。同时也是今天调试了很久的一个问题。

对于后台不同的数据,如果没有前后逻辑关系,使用多线程会加快程序的执行速度。最常用的就是将前台界面作为主线程,后台数据作为子线程,这样前端显示不会受到后端数据运算慢的限制(不会阻塞)。

但是值得注意的问题是,子线程尽量不要操作同一数据(如果实在要操作,需要加锁),尤其是全局变量和静态函数(多个线程同时操作)。

多线程的bug是很难调试的,如果遇到可以查看并行堆栈,是哪个线程导致的程序崩溃。