che*_*ica 10 nsoperationqueue grand-central-dispatch ios afnetworking
我似乎dispatch_queue_t和NSOperationQueue队列之间有一些混淆.
默认情况下,AFNetworking AFImageRequestOperation将在应用程序的主线程上执行成功回调块.要更改此设置,请使用允许您选择运行回调的队列AFHTTPRequestOperation的属性successCallbackQueue.
我正在尝试在已经执行HTTP请求的相同后台队列/后台线程上执行成功回调.NSOperationQueue运行HTTP请求的主要线程也应该运行回调,而不是返回主线程,因为我需要使用一些返回的图像进行一些繁重的计算.
我的第一次尝试是设置successCallbackQueue为运行的NSOperationQueue实例AFImageRequestOperation.但是,successCallbackQueue属性是类型的dispatch_queue_t,所以我需要一种方法来获取我的实例的底层dispatch_queue_tNSOperation,如果有这样的事情.
这是可能的,还是我需要创建一个单独的dispatch_queue_t?
我问的原因:AFNetworking继承的有些奇怪NSOperation,但我们希望我们使用dispatch_queue_t队列进行回调.混合两种范式dispatch_queue_t和NSOperationQueue.
谢谢你的任何提示!
没有这样的事情,a NSOperationQueue和a 没有一对一的对应关系,dispatch_queue_t两个API中的排队概念是非常不同的(例如,NSOperationQueue没有像GCD那样严格的FIFO排队).
NSOperationQueue用于执行代码的唯一调度队列是缺省优先级全局并发队列.
NSOperationQueue不是AFNetworking的瓶颈.请求操作受网络绑定,而不是CPU或内存.所有工作都在调度队列中异步完成,调度队列可作为属性访问AFHTTPRequestOperation.
不建议使用网络线程进行任何处理.这不会以任何方式改善性能.
相反,如果您注意到性能问题,请尝试限制操作队列中的最大并发操作数,以间接控制这些后台处理队列所完成的工作量.
| 归档时间: |
|
| 查看次数: |
6023 次 |
| 最近记录: |