RACScheduler
来源:互联网 发布:飞狐 指标数据输出 编辑:程序博客网 时间:2024/06/06 00:05
调度器
有了信号源和订阅者,我们还需要由调度器来统一调度订阅者订阅信号源的过程中所涉及到的任务,这样才能保证所有的任务都能够合理有序地执行。
RACScheduler 在 ReactiveCocoa 中就是扮演着调度器的角色,本质上,它就是用 GCD 的串行队列来实现的,并且支持取消操作。是的,在 ReactiveCocoa 中,并没有使用到 NSOperationQueue 和 NSRunloop 等技术,RACScheduler 也只是对 GCD 的简单封装而已。
同样的,RACScheduler 的一系列功能也是通过类簇来实现的,除了用来测试的子类外,总共还有四个私有子类:
主要就是 RACTargetQueueScheduler 子类:
RACImmediateScheduler :立即执行调度的任务,这是唯一一个支持同步执行的调度器;
RACQueueScheduler :一个抽象的队列调度器,在一个 GCD 串行列队中异步调度所有任务;
RACTargetQueueScheduler :继承自 RACQueueScheduler ,在一个以一个任意的 GCD 队列为 target 的串行队列中异步调度所有任务;
RACSubscriptionScheduler :一个只用来调度订阅的调度器。
值得一提的是,在 RACScheduler 中有一个非常特殊的方法:
- (RACDisposable *)scheduleRecursiveBlock:(RACSchedulerRecursiveBlock)recursiveBlock;
它可以将递归调用转换成迭代调用,这样做的目的是为了解决深层次的递归调用可能会带来的堆栈溢出问题。
阅读全文
0 0
- RACScheduler
- RAC---RACScheduler(1)
- ReactiveCocoa 中 RACScheduler 是如何封装GCD的
- 元素出栈、入栈顺序的合法性
- window编程之CreateProcess
- 找出字符串中子串的出现次数 C语言实现
- 本地Navicat连不上Linux虚拟机MySQL数据库问题
- 自主编程实现数组队列和链式队列
- RACScheduler
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
- 【图解】Eclipse下JRebel6.2.0热部署插件安装、破解及配置【转】
- ListView,GridView万能适配器
- 【CQOI2015】网络吞吐量
- Python爬虫002浏览器的模拟Header属性
- 利用Defraggler整理文件夹的方法
- redis配置详解
- tensorflow tf.group