从单线程到多线程应用程序不仅仅提供好处,它也有一些代价。只是因为你可以,就把一个应用程序变成多线程。你应该明了,这样做所获得的好处要大于成本。如果有疑问,请尝试着量化一下应用程序的性能或响应速度,而不是只是猜测。
更复杂的设计
上下文切换开销
上下文切换不便宜。没必要的话,不要在线程之间切换。
你可以在维基百科上阅读更多关于上下文切换的资料:
http://en.wikipedia.org/wiki/Context_switch
更复杂的设计
尽管多线程应用程序的某些部分比单线程应用程序更简单,但其他部分更复杂。需要特别注意访问共享数据的的被多个线程执行的代码。线程的交互绝不是很简单的事。由不正确的线程同步引起的错误可能非常难以检测,重现和修复。
上下文切换开销
当CPU从一个线程的执行切换到另一个线程的执行时,CPU需要保存当前线程的本地数据,程序指针等,并且加载要执行的下一个线程的本地数据,程序指针等。这个切换被称为“上下文切换”。 CPU从在一个线程的上下文中执行切换到在另一个线程的上下文中执行。
上下文切换不便宜。没必要的话,不要在线程之间切换。
你可以在维基百科上阅读更多关于上下文切换的资料:
http://en.wikipedia.org/wiki/Context_switch
增加资源消耗