1つのスレッドで実行されるGCDキューを作成する方法はありますか? コアデータ操作を処理するためにそのキューを使用します。Core Dataのために1つのスレッドにのみ存在するGrand Central Dispatchキューを作成する
3
A
答えて
4
はい、フラグDISPATCH_QUEUE_SERIAL
を持つキューを作成してください(これもデフォルトです)。しかし、コアデータ操作を別のスレッドに移動するように注意してください。与えられたNSManagedObjectContext
は、1つのスレッドでのみ使用する必要があるため、メインスレッド用とバックグラウンドスレッド用の2つのコンテキストが必要です。これを正しく行うには注意が必要です。
UIManagedDocument
(これがiOS5の場合)を調べることができます。これがこの作業の多くを行います。少なくとも、マルチスレッド化のための親子コンテキストの使用方法を学ぶために、そのドキュメントを読むべきです。
0
管理オブジェクトコンテキストを作成するときは、その並行処理タイプを指定します。 NSPrivateQueueConcurrencyTypeまたはNSMainQueueConcurrencyTypeを指定すると、MOCはすでに独自のスレッドで実行しています。具体的に...
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
// Do other MOC initializations stuff...
[moc.performBlock:^{
// All code in this block will run in the proper thread for the Managed Object Context.
}];
FWIW、NSMainQueueConcurrencyTypeは同じように動作しますが、それがメインキューに取り付けられています。 NSConfinementConcurrencyTypeで作成されたMOCでperformBlockを呼び出すことはできません。作成とすべての作業は同じスレッドで行われなければなりません。その場合にのみ、独自のキューを作成する必要があります。
関連する問題
- 1. メインのGrand Central Dispatchキューはシリアルまたはコンカレントですか?
- 2. CoreDataを使用したGrand Central Dispatch(GCD)
- 3. IOS Grand Central Dispatch with callback method
- 4. Grand Central Dispatchの宣言方法
- 5. Grand Central Dispatch(GCD)と非同期API
- 6. Grand Central Dispatch:ブロックのキューが完了するのを待つ方法を教えてください。
- 7. Grand Central Dispatchキューでスリープを使用しない理由はありますか?
- 8. アプリケーションまたはrunloop以外でのGrand Central Dispatchの使用
- 9. Grand Central Dispatchでデッドロックを作成するにはどうすればよいですか?アップルのドキュメントで
- 10. iOSでの.cファイルでのGrand Central Dispatchの使用方法
- 11. Grand Central Dispatchを正しく使用していますか?
- 12. OpenMPでGrand Central Dispatchを使用するのはなぜですか?
- 13. Grand Central Dispatch - 最初の画像がロードされたら表示しますか?
- 14. Grand Central Dispatchを無限のwhileループで使用していますか?
- 15. Quartz 2DとGrand CEntral Dispatchを使用してUIImageをプログラムで生成する方法
- 16. Grand Central Dispatchを使用して1つの非同期コールを開始するにはどうすればよいですか?
- 17. iOSでマルチタスクを実装する際のGrand Central Dispatchの役割は何ですか?
- 18. メインスレッドで使用するためにGrand Central Dispatch _asychブロックからデータ値を戻すにはどうすればよいですか?
- 19. Core Dataでリモートデータにアクセスするためのパターン?
- 20. 既存のsqliteファイルをCore Dataにインポートするには?
- 21. 別のスレッドで1つのスレッドでデータを作成する
- 22. iphone - Grand Central Dispatchのセカンダリスレッドでusleepを使用してもよろしいですか?
- 23. オブジェクトをファイルに保存するための新しいスレッドを作成する
- 24. Core Dataに大量のテキストを保存する
- 25. Grand Central Dispatchのすべてのタスクが完了したことをどのように知ることができますか?
- 26. データベースファイルを現在のディレクトリの1つ上に作成する
- 27. スレッドでの作業キューの作成
- 28. ファイルが存在しない場合にのみ作成する
- 29. iOS。 Grand Central DispatchのコンテキストでURL認証の挑戦を処理するにはどうすればいいですか
- 30. Grand Central Dispatchを使用して、ブロックが既に実行されているかどうかを確認するにはどうすればよいですか?
この回答は古くなっているようです。ドキュメントから: "シリアルキュー(プライベートディスパッチキューとも呼ばれます)は、キューに追加された順に一度に1つのタスクを実行します。現在実行中のタスクは、タスクto task **)がディスパッチキュー " – Andreas