2010年四月八日,Apple宣布iPhone OS 4.0支援”多工作业”,不过这个多工作业,却不是一般的多工作业。 用Apple官方的说法:”iPhone OS 4’s new multitasking offers users a new way to quickly move between apps, and provides developers seven new multitasking services to easily add multitasking features to their apps.”(注)--iPhone OS 4的全新多工作业方法,能让用家快速地从软件之间切换,并为开发者提供七个多工的服务,让开发者能加入多工作业特征于它们的软件里。
对,细心一点看的话--这其实与真正的多工作业有点不同。但是,永远有些傻兮兮的媒体断章取义,看过标题,不明细节,就直接在文稿写入--iPhone OS 4.0支援多工作业。
WHAT IS MULTI-TASKING?
究竟iPhone的多工作业有什么不同?简单来说--它不是多工作业。
什么是多工作业呢?其实多工作业并不是真正的同时系统作业(特别是对于单核处理器而言),而是靠处理器在不同的应用程序下快速切换下的结果(注)。真正的多工作业,是需要取得操作系统的权限,让软件在退出后仍然可以调动处理器的执行绪(Threading)。
怎样才是真正的多工作业?就是当你在玩Street Fighter 时,控制着RYU与KEN战斗时,突然有电话进入--当你使用电话的途中,你的RYU就会退到背景运作,然后就会被Ken海扁,吃KEN的昇龙烈破,然后当你谈完2分钟的电话回到Street Fighter时,你发现RYU早就被干掉、或是游戏老早就Time up了。
IPHONE’S MULTI-TASKING?
那iPhone的又有什么不同?有。一向以来,iPhone从来都不容许任何Apps取得iPhone OS的主导权限, 也不容任何Apps取得执行绪的控制权,所有的Apps都是在一个类似沙盒的空间上运作。这样做法虽然不能让Odin进行真正的多工作业,但它的最大好处是能防止任何不明来历的软件(包括病毒),静静地在iPhone背后运作、偷取资料、自我复制、甚至是大量占用系统资源,以至拖跨整个系统。
同样地,iPhone OS 4.0也不会把Apps的权限提升到可以在系统背景里操控处理进程的程度--而是透过一些既有系统接口(API)分给第三方Apps,把这些App部分既有服务导入iPhone OS既有的背景服务之中。
透过上述系统接口的协助,Odin就可以在发Twitter的同时接听Skype电话,也可以在玩游戏的时候下载更新--情况就像”真正”的多工作业一样。然而,为什么说iPhone OS 4.0不是真正的多工?
事实上,它并没有破例地让Apps在幕后执行(Exective),在背景的只有两种:
1. 是服务(Services)而不是程序(Programs):只有音乐或GPS在运作,而不是Apps;
2. 是冻结了的程多而不是运行中的程序:在唤醒该程序之前,它是不会有任何动作的。
简单来说,如果说真正的多工作业是当我们在接听电话时,RYU就会被KEN海扁的话,那iPhone OS 4.0的多工就是当Odin接听电话时,RYU和KEN都会被定格,KEN的昇龙烈破还在半空,被昇起的RYU还是一脸痛苦、被烧焦了的样子,而计时表还可能是停在99秒--顶多是Street Fighter的背景音乐会继续播放而已。
对,原来这些软件退到背景后,并不会继续运作--举例说:Papago会在Odin去到不同的地方时,就会即时显示该处的地图,但是,当Papago退到背景时,软件将不会显示该处的地图,直至Odin重启你的Papago,它才会把你所身处位置的地图读取出来。所以,我们不能一边看电子书,一边把SIMCITY退到幕后来继续储蓄金钱时,;也不能一边录音/录影的同时、一边又发个SMS。原理上,它的运作与Android有点相似,但它把Android更彻底,因为iPhone基本上是没有改变过目前的背景运作政策,仍然不容许第三方软件在背景运作。
对,它只是把既有的服务优化而已,这就是iPhone OS 4.0的多工真相!
不过,虽然它不是真正多工,但会比真正多工要差吗?不会。因为,差不多90%的多工作业都能在这个”伪多工”中完美地重现,剩下的10%也不是必须的。“伪多工”反而带来什么好处?