EA&UML日拱一卒-多任务编程超入门-(1) 什么是多任务

多任务可以说是编程中的一个难点,对于非计算机专业的开发者来讲,尤其如此。本系列希望可以用尽量浅显的语言对多任务编程进行说明,在满足多任务编程基本要求的同时,提供继续深入研究提供一个良好的出发点。

我们的文章首先一一个单核CPU的情况为前提进行说明。


什么是多任务


从用户观点来看就是计算机同时做几件事。主要有两种情况,一种是播放视频的同时可以写博客,敲代码的同时可以下载文件等,这属于多个应用同时执行的情况;另一种情况,如果我们观察视频播放器,在播放视频时可以操作停止按钮,这属于一个应用内部的多任务。


从程序员观点来看,就是计算机同时执行多段代码。这里用一个不太严谨的示意图来说明程序员的观点的单任务和多任务,假设两件事情需要处理,分别是TASK1,TASK2。


在单任务执行时,首先执行TASK1,当TASK1结束以后,执行TASK2。如果是多任务执行的话,就是TASK1和TASK2交替执行。


所谓不严谨值得是在实际的系统中:

  1. 任务块的划分不一定均匀

  2. 执行的次序不一定严格交替

  3. 执行间隔不一定


为什么需要多任务


有一个错误的理解是提高系统的效率,应该说这是一个不准确的说法,从执行时间的来讲,需要做的工作没有减少,当然占用CPU的时间就不会减少。不仅如此,多任务执行时多了TASK间调度的操作,实际上执行时间还是会略有延长的。


那么多任务执行的意义在哪里呢?


通过上图可以看出,虽然总的时间没有变化,每个任务的执行间隔变短了,换句话说相应快了。如果间隔足够短(例如数10毫秒),从宏观上看,就好像两个任务都在同时执行。都能对输入进行及时地处理了。


换一种说法,如果存在需要至少一个对外部要求快速反应的任务时,多任务是一种有效的解决方案。否则没有必要引入多任务。


实现多任务的方式


程序员自己实现


将两个任务拆分为小的段落,通过程序控制任务的交替执行。这种方式的缺点是程序会变得很复杂,增加任务或者调整任务的内容时的维护会非常麻烦。当然也有好处,这种方式不要求系统支持多任务,适用于单任务系统甚至是裸机上执行的程序。


通过操作系统实现


每 个任务作为单独的程序来设计和实现,任务之间的调度利用操作系统的功能来实现。这种做法的好处是最大限度保持任务之间的独立性,使增加任务或者调整任务内 容变得简单。虽然这种方式可能增加系统开销,但是在目前软件/硬件成本都在不断下降的大环境下,这种方式已经成为主流。


本连载说明的内容就是通过操作系统实现多任务的情况。


写在文章的最后


既然已经读到这里了,拜托大家再用一分钟时间,将文章转发到各位的朋友圈,微信群中。

本公共号的成长需要您的支持!
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值