从单线程倒多线程应用带来的并不都是好处。 他同样也有很多代价。 不要因为能用多线程写就特意在程序中使用多线程。 你如果使用多线程就应该得到使用多线程的好处,比不适用的代价大。如果有疑问,尝试测量应用的性能和相应能力。不要去猜。
更复杂的设计
尽管在某些方面多线程比单线程程序还要小, 其他方面要更复杂一点。 多线程执行代码访问分享数据需要特殊的关注。线程交互也很复杂。 不正确的线程公布导致的错误也很难被探测,再现和修复。
选择上下文开销
像一个CPU 从选择哪个线程进行执行, CPU 需要保存本地数据,程序指针等等, 在当前的线程,当前的线程,和加载本地数据,程序指针等等。当下一个线程执行时。 这个选择被称为“ 内容选择” 。CPU从在一个线程的上下文中执行切换到在另一个线程的上下文中执行。
选择上下文并不是一件简单的事情。 如果没有这个必要应该尽量避免。
你可以来在Wiki 中了解更多关于选择上下文的内容:
http://en.wikipedia.org/wiki/Context_switch
资源消耗增加
一个线程为了执行需要从计算机中得到一些资源。除了CPU 的时间,线程需要一些内存来保存其本地堆栈。它还可能占用操作系统内部管理线程所需的一些资源。尝试船舰一个程序,它创建100个线程,什么都不做,只等待,看看这个应用在运行的时候拿走多少内存。