不同的请求有不同的 DispatchQueue
Different DispatchQueue for different requests
我想为不同的 http requests
设置不同的优先级,并且我希望能够立即 stop/pause 一些请求,并且如果我有 [=11= 的请求则只执行其中的一些请求] 优先。我打算使用不同的方法,但现在似乎所有方法都已弃用:
1) 要使用 AFHTTPRequestOperation
,所以我可以在 DispatchQueue
的基础上创建不同的 OperationQueue
并在那里添加操作,但它在 AFNetworking
的新版本中已被弃用
2) 为不同的 Synchronous 请求使用具有不同优先级的不同 DispatchQueues(使用 NSURLConnection.sendSynchronousRequest
)(这样我可以停止一些队列,如果我有最高优先级的操作和我可以立即取消操作)。但据我了解 ,这种方式已被弃用,所以我无法发送同步请求。
我知道在某些情况下,请求似乎是使用信号量同步的,但这只是一种错觉,因为所有请求都将在我无法控制的队列中执行。
有没有办法控制请求执行的DispatchQueue
(或OperationQueue
)?
您 should/could 使用 NSURLSessionTask/URLSessionTask
子类从网络中获取数据。您可以轻松地将它们封装在一个 NSOperation/Operation
子类中(参见 slide.
您只需要为其添加取消支持。您可以在 NSOperation documentation.
的 响应取消命令 部分中找到有关取消的信息
要处理优先级,您可以使用多种工具:
- 要处理
OperationQueue
个实例之间的优先级,您可以为它们赋予不同的 qualityOfService
值。
- 要处理
Operation
个实例之间的优先级,您可以为它们赋予不同的 qualityOfService
、queuePriority
或 threadPriority
值。
可以在iOS 应用 的能源效率指南的Prioritize Work with Quality of Service Classes section 中找到关于这些参数的一些额外说明。
我想为不同的 http requests
设置不同的优先级,并且我希望能够立即 stop/pause 一些请求,并且如果我有 [=11= 的请求则只执行其中的一些请求] 优先。我打算使用不同的方法,但现在似乎所有方法都已弃用:
1) 要使用 AFHTTPRequestOperation
,所以我可以在 DispatchQueue
的基础上创建不同的 OperationQueue
并在那里添加操作,但它在 AFNetworking
的新版本中已被弃用
2) 为不同的 Synchronous 请求使用具有不同优先级的不同 DispatchQueues(使用 NSURLConnection.sendSynchronousRequest
)(这样我可以停止一些队列,如果我有最高优先级的操作和我可以立即取消操作)。但据我了解
我知道在某些情况下,请求似乎是使用信号量同步的,但这只是一种错觉,因为所有请求都将在我无法控制的队列中执行。
有没有办法控制请求执行的DispatchQueue
(或OperationQueue
)?
您 should/could 使用 NSURLSessionTask/URLSessionTask
子类从网络中获取数据。您可以轻松地将它们封装在一个 NSOperation/Operation
子类中(参见 slide.
您只需要为其添加取消支持。您可以在 NSOperation documentation.
的 响应取消命令 部分中找到有关取消的信息要处理优先级,您可以使用多种工具:
- 要处理
OperationQueue
个实例之间的优先级,您可以为它们赋予不同的qualityOfService
值。 - 要处理
Operation
个实例之间的优先级,您可以为它们赋予不同的qualityOfService
、queuePriority
或threadPriority
值。
可以在iOS 应用 的能源效率指南的Prioritize Work with Quality of Service Classes section 中找到关于这些参数的一些额外说明。