6

この例では、デフォルトの優先度で 100NSURLSessionDataTaskを開始しますが、最後の優先度を高優先度に設定します。ただし、最後のタスクが最後に実行されるため、まったく効果がないようです。

NSURLSession *session = ...
NSURLRequest *request = ...

for (int i = 1; i<=100; i++) {
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSLog(@"%d", i);
    }];
    if (i == 100) {
        dataTask.priority = NSURLSessionTaskPriorityHigh;
    }
    [dataTask resume];
}

優先度の高いこのタスクが、既定の優先度の他の 99 よりも前に実行されないのはなぜですか? 優先度の高いタスクが追加される前に、以前のタスクのいくつかが実行を開始する可能性があると思いますが、すべてではありません。

HTTPMaximumConnectionsPerHost を 1 に設定して試してみましたが、違いはありません。

4

2 に答える 2

0

サーバーは HTTP/2 をサポートする必要があります。
NSURLSessionTaskPriority は、HTTP/2 優先度フレーム/依存関係の重み付けのラッパーです。

NSURLSession の HTTP/2 のサポート

于 2020-03-17T03:38:29.003 に答える