动机

使用并发最强制性的原因之一就是要产生能够作出响应的用户界面。考虑一个程序,它要

执行某项CPU深度占用的计算,这样就会导致用户的输入被忽略,也就无法作出响应。问题

的实质是:程序需要一边连续进行计算,同时还要把控制权交给用户界面,这样程序才能

响应用户的操作。如果你有一个“退出”按钮,你一定不希望在程序的每段代码里都检测按

钮状态,但你还是希望对这个按钮能够作出响应,就好像你定期对其进行检测一样。

传统的方法不可能一边连续执行其操作,同时又把控制权交给程序的其余部分。事实上,

这听起来就像是不可能完成的任务,就好象让一个处理器同时出现在两个地方,但这恰恰

是并发编程所能够提供的错觉效果。

 

并发还可以用来优化程序的吞吐量。比如,在你等待数据到达输入/输出端口的时候,你可

以进行其他重要的工作。要是不用线程的话,唯一可行的办法就是不断查询输入/输出端口,

这种方法不仅笨拙,而且很困难。

 

如果你有一台有多处理器的机器,多个线程就可以分布在多个处理器上,这可以极大地提

高吞吐量。这种情况通常出现在有多个强劲处理器的web服务器上,在这种环境下,程序对

于每个用户请求都将分配一个线程,这样就可以把大量的请求分配给多个处理器来处理。

 

需要牢记的是,具有多个线程的程序,必须也能够在只有单处理器的机器上运行。因此,

不使用任何线程而写出具有同样功能的程序也是可能的。然而,使用多线程的重要好处是

可以使程序的组织更有条理,因而能大大简化程序设计。对于某些类型的问题,比如模拟

视频游戏,如果没有对并发的支持将会非常难以解决。

 

线程模型为编程带来了便利,它简化了在单一程序中交织在一起同时运行的多个操作。在

使用线程时,处理器将轮流给每个线程分配其占用时间。每个线程都觉得自己在一直占用

处理器,但事实上处理器时间是划分成片段分配给了所有的线程。例外情况是程序运行在

具有多个处理器的机器上,但线程的一大好处是可以使你从这个层次抽身出来,即代码不

必知道它是运行在具有一个还是多个处理器的机器上。所以,线程是一种建立透明的、可

扩展的程序的方法,如果程序运行得太慢,为机器增添一个处理器就能很容易地加快程序

的运行速度。多任务和多线程往往是使用多处理机系统的最合理方式。

 

在单处理器机器上,线程会降低一些运行效率,但是,从程序设计、资源平衡、用户使用

方便等方面来看,还是非常值得的。一般来说,线程使你能得到更加松散耦合的设计;否

则的话,你将不得不在部分代码中直接关注那些通常由线程处理的工作。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值