2015-12-17 17:34:07 636浏览
本文为大家介绍iOS操作系统多任务线程抢占的优点,有意的挂起一个线程而调度另外的线程称为抢占。采用抢占而不是直至运行完的调度策略称为抢占调度。采用这种调度策略的操作系统称为抢占式多任务操作系统。抢占主要是基于内核通过一个上下文转换(Context Switch)来周期性地改变现在运行的线程而实现的。上下文转换的触发可以是一个系统时钟(每一个线程都分到一个时钟长度),也可以是一个调用内核本身的函数。当一个上下文转换被触发时,内核就选择下一个线程访问CPU,而被抢占的线程则被放于队列尾,并根据调度策略等待下一次被调度的机会。
iOS操作系统多任务线程抢占有许多优点,包括下面这些:
一、 它的可预测性
在有限的范围内,一个线程可以知道它下次可能被调度的时问。例如:假设在内核设置受限的情况下,一个线程可以设置为1秒钟运行两次,因此iOS开发编程者就能确定在哪个时间间隔里,该线程可能会被调度。
二、它的不易被打断性
沿有任何单独的线程能长时问占用CPU,一个陷入无限死循环的线程并不能阻止其他的线程被调度。当然,抢占式多任务调度策略也有许多不足,比如:
1、 它比运行直至结束调度策略的效率低
总的来说,抢占式多任务调度系统总是倾向于经常进行上下文转换,这也意味着CPU将用更多的时间来进行线程调度和上下文转换。
2、 它使应用软件变得更加复杂
一个运行于抢占式系统内的线程可能随时都会被中断,在扣丁学堂iOS培训视频中详细介绍了编程者如何设计和编写他的应用程序来保护关键数据结构使其不会因抢占而被其他的线程所篡改。
温馨提示:当操作系统内核停止一个线程使用CPU,而调度另一个线程访问CPU时,一个上下文转换就发生了。换句话说,当计算机改变它正执行的任务时,就发生了上下文转换。如果根据CPU占用时间来评价的话,上下文转换是非常费时的,因为所有正在运行的线程所使用的寄存器都得被保存,然后再重新为新的线程使用。上下文是被抢先的线程得知它在哪里被停止的基础,也是即将运行的线程得知它上次运行到哪里的基础。