web-dev-qa-db-ja.com

NSOperationQueueをシリアルにする方法は?

NSOperationQueueを同時ではなくシリアルにするつもりです。

私が知っている1つの方法は次のとおりです。

NSOperationQueue *globalQueue;
globalQueue.maxConcurrentOperationCount =1;

他に方法はありますか?

20
lakesh

シリアルキューが必要な場合は、maxConcurrentOperationを1に設定するのが正しいでしょう。新しいキューを作成する代わりに[NSOperationQueuemainQueue]を使用して、メインスレッドでのキュー操作を行うこともできます。ただし、これは非常に短い操作が追加され、ユーザーインターフェイスがブロックされない場合にのみ役立ちます。一方、スレッドと同期について心配する必要はありません。

AddOperations:waitUntilFinished:YESを使用するか、操作を追加するたびにメッセージwaitUntilAllOperationsAreFinishedを送信して、任意のキューに操作を追加できます。そうすれば、キューをシリアルとして定義する代わりに、操作をシリアル化できます。

17
Gabriel