Description: this article is talking about that which situation you will consider to use multi thread
Situation
- 连续的操作,需要花费很长的时间才可能完成
- 并行计算
- 为了等待网络、文件系统、用户或其他I/O相应而耗费大量的执行时间
为什么需要多线程
从用户的角度: 就是为了得到更好的系统服务
从程序自身的角度:就是使目标任务能够尽可能快的完成,更有效的利用系统资源
符合场景
- 程序包含复杂的计算任务:主要是利用多线程获取更多的CPU时间
- 处理速度较慢的外围设备:比如打印机,再比如网络程序,涉及数据包的收发,时间因素不定。使用独立的线程处理这些任务,可使程序无需专门等待结果
- 程序设计自身的需要: windows系统是基于消息循环的抢占式多任务系统,为使消息循环系统不至于阻塞,程序需要多个线程来共同完成某些任务
多线程的缺点
- 如果有大量的线程,会影响性能,因为操作系统需要在他们之间切换
- 更多的线程需要更多的内存空间
- 线程终止需要考虑对程序运行的影响
- 通常模型数据是在多个线程间共享的,需要防止线程死锁情况的发生