多线程的代价

从单线程倒多线程应用带来的并不都是好处。 他同样也有很多代价。 不要因为能用多线程写就特意在程序中使用多线程。 你如果使用多线程就应该得到使用多线程的好处,比不适用的代价大。如果有疑问,尝试测量应用的性能和相应能力。不要去猜。

更复杂的设计

尽管在某些方面多线程比单线程程序还要小, 其他方面要更复杂一点。 多线程执行代码访问分享数据需要特殊的关注。线程交互也很复杂。 不正确的线程公布导致的错误也很难被探测,再现和修复。

选择上下文开销

像一个CPU 从选择哪个线程进行执行, CPU 需要保存本地数据,程序指针等等, 在当前的线程,当前的线程,和加载本地数据,程序指针等等。当下一个线程执行时。 这个选择被称为“ 内容选择” 。CPU从在一个线程的上下文中执行切换到在另一个线程的上下文中执行。

选择上下文并不是一件简单的事情。 如果没有这个必要应该尽量避免。

你可以来在Wiki 中了解更多关于选择上下文的内容:

http://en.wikipedia.org/wiki/Context_switch

资源消耗增加

一个线程为了执行需要从计算机中得到一些资源。除了CPU 的时间,线程需要一些内存来保存其本地堆栈。它还可能占用操作系统内部管理线程所需的一些资源。尝试船舰一个程序,它创建100个线程,什么都不做,只等待,看看这个应用在运行的时候拿走多少内存。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值