多线程成本-3

  • [更复杂的设计])
  • [上下文切换开销])
    从单线程应用程序到多线程应用程序不仅会带来好处。它也有一些费用。不要仅仅因为可以就启用多线程应用程序。您应该有一个好主意,即这样做所带来的收益大于成本。如有疑问,请尝试评估应用程序的性能或响应能力,而不仅仅是猜测

更复杂的设计

尽管多线程应用程序的某些部分比单线程应用程序简单,但其他部分则更复杂。由多个线程访问共享数据执行的代码需要特别注意。线程交互远非总是那么简单。错误线程同步引起的错误很难检测,重现和修复

上下文切换开销

当CPU从执行一个线程切换到执行另一个线程时,CPU需要保存当前线程的本地数据,程序指针等,并加载要执行的下一个线程的本地数据,程序指针等。此开关称为“上下文开关”。CPU从在一个线程的上下文中执行切换为在另一个线程的上下文中执行。
上下文切换并不便宜。您不想在线程之间进行不必要的切换。
您可以在Wikipedia上阅读有关上下文切换的更多信息:
http://en.wikipedia.org/wiki/Context_switch

资源消耗增加

线程需要计算机中的一些资源才能运行。除了CPU时间外,线程还需要一些内存来保留其本地堆栈。它还可能会占用操作系统中管理线程所需的一些资源。尝试创建一个程序,该程序创建的100个线程除了等待外什么也不做,并查看应用程序在运行时需要占用多少内存。

你可能感兴趣的:(多线程成本-3)