2

永続ストア、オブジェクト モデル、およびオブジェクト コンテキストを保持する Core Data 抽象化クラスを作成しました。マルチスレッドを簡単にするために、オブジェクト コンテキストのアクセサーを記述して[NSThread currentThread]、スレッドを識別するために使用することにより、現在のスレッドでのみ使用できるインスタンスを返すようにしました。

古い NSThread の代わりとして使用したい GCD を使用しない限り、これは完全に機能します。私の質問は、GCD スレッドを特定するにはどうすればよいですか? 質問は iOS と Mac OS X の両方に当てはまりますが、両方のプラットフォームで同じだと思います。

4

3 に答える 3

2

dispatch_get_current_queue()が何かを返すかどうかを確認できます。ただし、キューのコンテキストストレージを使用して、スレッドごとのCDコンテキストモデルではなく、キューごとのCDコンテキストに移行するというJeremyのアイデアは気に入っています。

于 2011-03-03T16:11:51.127 に答える
1

おそらく、 dispatch_set_context() を使用して、各スレッドの CD コンテキストを GCD コンテキストに格納できます。

于 2011-03-03T15:41:12.793 に答える
0

Magical Record の contextForCurrentThread ヘルパー メソッドは、前述の内容と非常によく似ています (つまり、スレッドごとに 1 つのコンテキストを保持します)。GCD 実行ブロックは、単一のキューで実行されている間、GCD によって管理される任意のスレッドで実行される可能性があり、ランダムなクラッシュが発生する可能性があります。この記事をチェックしてください: http://saulmora.com/2013/09/15/why-contextforcurrentthread-doesn-t-work-in-magicalrecord/

于 2013-12-08T15:40:13.343 に答える