2016-08-31 6 views
0

私のアプリは単純な並行処理が必要なので、私はこれらの提案に対してGCDを選択しました。 すべてがうまくいく、私は優先度の高い1つのグローバルキューを使用します(Appleのデフォルトの1つ)。しかし、私はキューの制御に立ち往生しています。私はいくつかのユーザアクションの後に、このキュー内のすべてのプロセスを強制的にキャンセルする必要があります。 さらに、グローバルキューの1つに一時的なタスクがあるかどうかを確認できますか?それは、ユーザーが尋ねると同じタスクを設定しないようにするのに役立ちます。GCDグローバルキューコントロール

+0

さらに制御が必要な場合はNSOperationQueueを使用してください。 –

+0

GCDの上にビルドされた 'NSOperation'と' NSOperationQueue'を使うべきです。 'NSOperation'は取り消し可能です、' NSOperationQueue'は 'operations'と' operationCount'プロパティを持っています。 –

+0

@MartinRそれに対処するGCDメソッドはありませんか?基本的に、NSOperationQueueはこれらすべてのことを行うことができますか? –

答えて

0

一般に、GCDは軽量な並行性管理に適しています。ディスパッチキューを一時停止するには、単純にdispatch_suspend(queue)(urselfによって作成されたキュー、メインキューもグローバルキューも作成されません)です。 urの場合は、NSOperationQueueがより適切です。