Я согласен с @Rob, что он может создать свою собственную конфигурацию для URLSession
.Однако, если этот sharedSession
используется в разных заданиях, и он хотел, чтобы это задание выполнялось с максимальным числом одновременных асинхронных вызовов до 10, я бы предложил использовать либо NSOperationQueue
, либо dispatch_semaphore
для решения этой проблемы.Пожалуйста, обратитесь к приведенному ниже примеру, чтобы вкратце понять эти подходы
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
queue.maxConcurrentOperationCount = 10;
for (int i = 1; i <= 30; i++) {
[queue addOperationWithBlock:^{
NSLog(@"[Q] %d", i);
sleep(1);
}];
}
или
dispatch_queue_t q = dispatch_queue_create("q.q", DISPATCH_QUEUE_CONCURRENT);
dispatch_semaphore_t s = dispatch_semaphore_create(10);
for (int i = 1; i <= 30; i++) {
dispatch_async(q, ^{
NSLog(@"[Q] %d", i);
sleep(1);
dispatch_semaphore_signal(s);
});
}
. Вы можете наблюдать с консоли, чтобы увидеть результаты.В основном, два подхода будут выполнять максимум 10 вызовов одновременно, и пока один из них завершится, другие будут поступать в очередь выполнения.
Надеюсь, это поможет вам решить вашу проблему.Может иметь любое обсуждение по мере необходимости. !!!