多线程的代价

多线程也不是万金油,也是有代价的:

  • 程序设计更复杂
  • 上下文切换的开销
  • 耗费更多的资源

More complex design

多线程访问共享资源的时候要注意;多线程之间交换没那么简单;出了问题很难发现、重现和修复。

Context Switching Overhead

当CPU从一个线程切换到另外一个线程的时候,需要保存现场,然后切换到另外一个线程时也要恢复现场。上下文切换的代价不是那么简单,要避免不必要的上下文切换。

Increased Resource Consumption

除了CPU时间片,一个线程还需要内存资源来保存栈数据(loacal stack)。也会占用一些系统的内部资源。可以写一个程序创建100个什么也不做仅仅是处于等待状态的线程看看会占用多少内存空间。

原文地址:https://www.cnblogs.com/okadanana/p/5873989.html