6

非メインキューGCDキューを理解している限り、デフォルトでは、シングルコアCPUを搭載したデバイスでのみシリアルになります。ただし、デバイスに複数のコアがある場合、キュー内のブロックが同時に実行される可能性があります。

いくつかの同時実行の問題を克服するためにシリアルGCDキューを使用したいのですが、複数のコアがある場合でも、このキューはシリアルである必要があります。

開発者は、これはどういうわけか可能であると述べました。このような常時シリアルキューを作成するにはどうすればよいですか?

4

2 に答える 2

9

関数で取得できる標準のGCDキューdispatch_get_global_queueは確かに同時です。

ただし、 dispatch_queue_create関数を使用してカスタムgcdキューを作成できます。2番目のパラメーターとして渡しDISPATCH_QUEUE_SERIAL、そのキューをシリアルとして作成します。

于 2012-08-15T12:20:39.110 に答える
7

並行キューを作成するには:
dispatch_queue_t concurrentQueue = dispatch_queue_create("com.aj.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);

シリアルキューを作成するには:
dispatch_queue_t serialQueue = dispatch_queue_create("com.aj.serial.queue", DISPATCH_QUEUE_SERIAL);

于 2015-05-24T16:27:11.883 に答える