gpt4 book ai didi

ios - NSURLSession委托(delegate)Queue的maxConcurrentOperationCount是如何影响任务并发的

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:51 26 4
gpt4 key购买 nike

我正在使用 AFNetworking 3.0,它使用 NSURLSessionDataTask 和一个 operationQueue(AFURLSessionManager 的属性),用作 NSURLSession< 的委托(delegate)队列

简单的说

AFURLSessionManager.operationQueue == NSURLSession.delegateQueue

AFNetworking 3 代码

self.operationQueue = [[NSOperationQueue alloc] init];
self.operationQueue.maxConcurrentOperationCount = 1;
self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue];

来自 Apple 文档。到 NSURLSession delegateQueue

用于安排委托(delegate)调用和完成处理程序的操作队列。队列不必是串行队列。如果为 nil, session 将创建一个串行操作队列以执行所有委托(delegate)方法调用和完成处理程序调用。

是否设置 self.operationQueue.maxConcurrentOperationCount = 4; 意味着会有最大值。 4 个同时处理的NSURLSessionDataTask?并将其设置为 = 1(AFNetworking 的默认值)意味着此时只有一项任务,必须完成才能开始另一项任务?

或者我错了,这只会影响委托(delegate)消息传递,这意味着将其设置为 4 可以在 4 个不同的线程上触发委托(delegate)回调...而设置为 1 意味着回调始终在同一线程上, 但无论如何任务都是同时处理的

最佳答案

该队列是委托(delegate)队列,因此它应该只影响委托(delegate)消息传递。

当你创建一个 NSURLSession 时,你给它一个 NSURLSessionConfiguration 类型的配置对象。

NSURLSessionConfiguration 包含一个属性 HTTPMaximumConnectionsPerHost,它允许您控制与单个主机的同时连接数。这是我所知道的唯一可以让您控制连接数的机制。

关于ios - NSURLSession委托(delegate)Queue的maxConcurrentOperationCount是如何影响任务并发的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39807300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com