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

网友投稿 506 2022-11-12

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

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

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

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

什么是多任务

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

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

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

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

任务块的划分不一定均匀执行的次序不一定严格交替执行间隔不一定

为什么需要多任务

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

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

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

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

实现多任务的方式

程序员自己实现

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

通过操作系统实现

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

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

写在文章的最后

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:C++核心准则​NL.17:使用K&R风格派生的布局
下一篇:详谈Spring是否支持对静态方法进行Aop增强
相关文章

 发表评论

暂时没有评论,来抢沙发吧~