1

一度に多くのスレッドを開始したいので、次のコードを使用しました。

単一のキューを作成してそれに多くの操作を入れるか、単一の操作でそれぞれ多くのキューを作成するかについて混乱しています。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
    for(int INDEX = 0; INDEX < 5; INDEX++) {
        dispatch_async(queue, ^{
            /*some code*/        
        }); 
    }

for(int INDEX = 0; INDEX < 5; INDEX++) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
            /*some code*/        
        }); 
    }

最適なものはどれですか?また、GCD のスレッド数に制限はありますか?

4

1 に答える 1

5

複数のキューを作成していません。グローバル キューの 1 つを取得しています。あなたのアプリにはそれらのうちの 3 つがあり、作成も破棄もできません。

さらに、( を使用してdispatch_queue_create()) キューを作成していたとしても、必ずしもキューごとに新しいスレッドを作成したり、まったく新しいスレッドを作成したりする必要はありません。Grand Central Dispatch システムがすべてのスレッドを管理します。GCD は、作成できるキューの数を制限しません。

GCD リファレンスConcurrency Programming Guideをお読みください。

于 2012-07-28T07:49:52.370 に答える