1
NUT 2017-05-10 09:04:37 +08:00
什么叫做时间间隔? 定时去调用吗?还是一个执行完阻塞到下一个开始执行?
OC 有两种实现队列的方法, 1.GCD 的线程队列 queue 2.NSOperationQueue queue 所执行的 task,都是线程安全的, 所以你要处理所执行变量的线程安全。 如果是这样 我觉得你可以用 gcd queue 中 sync 的那种方法来做。 |
3
NUT 2017-05-10 14:26:47 +08:00
@niselover 你的情况,这两个都可以实现。 用 NSOperationQueue 时候需要设置最大的并发是 1,同时需要保证,NSOperation 的 start 或者 run 方法 里面代码块是 同步执行吗,否则会出现回调无法着陆的问题。NSOperationQueue 是 GCD 的封装可以进行某一个异步任务的取消,GCD 就无能为力了。 有机会可以看看 AFNetworking 在 1.*版本的实现。
|
4
qinbingchen 2017-05-10 23:42:13 +08:00
问题描述不清楚啊 有时间间隔的....
|
5
xi_lin 2017-05-11 13:44:53 +08:00
下一个开始执行的调度机制是啥?
|
6
NUT 2017-05-11 17:18:32 +08:00
@xi_lin #5 串行队列,GCD queue 自己调度, 或者自己写一个生产消费模型, 原理可以参考下 JAVA 的 BlockingQueue
|
7
xi_lin 2017-05-11 18:30:26 +08:00
@NUT 串行队列或者 BlockingQueue 我没问题,我是不理解 LZ 问题里的时间间隔,说是执行完要阻塞队列到下一个开始执行。这个开始执行的时机不知道是怎么来确定的。
|
8
NUT 2017-05-11 18:32:33 +08:00
那你问问楼主。 或者说何必那么纠结呢。
|
9
niselover OP @qinbingchen
@xi_lin @NUT 不好意思 没描述清楚 需求是这样的 服务器返回数据 调用方法 执行动画 但是如果返回数据并发太高 上个动画还没执行完下个动画就执行 偶尔会出问题 所以需要在服务器返回数据时加入一个队列 然后间隔一定时间 再执行 请教各位有啥好的方案么 |