Grand Central Dispatch で dispatch_sync を使用する。
2023-12-12 13:16:19
質問
の目的は何なのか、本当に明確な使用例で説明できる人はいますか?
dispatch_sync
で
GCD
は何のためにあるのでしょうか?どこで、なぜこれを使わなければならないのか、理解できません。
ありがとうございます!
どのように解決するのですか?
ブロックを実行し、結果を待ちたいときに使います。
この例として、同期のためにロックの代わりにディスパッチキューを使っているパターンがあります。例えば、共有の NSMutableArray があるとします。
a
があり、ディスパッチキューによってアクセスが媒介されているとします。
q
. バックグラウンドスレッドが配列に追加している間(非同期)、フォアグラウンドスレッドは最初の項目を取り出している(同期)かもしれません。
NSMutableArray *a = [[NSMutableArray alloc] init];
// All access to `a` is via this dispatch queue!
dispatch_queue_t q = dispatch_queue_create("com.foo.samplequeue", NULL);
dispatch_async(q, ^{ [a addObject:something]; }); // append to array, non-blocking
__block Something *first = nil; // "__block" to make results from block available
dispatch_sync(q, ^{ // note that these 3 statements...
if ([a count] > 0) { // ...are all executed together...
first = [a objectAtIndex:0]; // ...as part of a single block...
[a removeObjectAtIndex:0]; // ...to ensure consistent results
}
});
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] Objective-Cの定数
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] Cocoa Autolayout: コンテンツの抱擁 vs コンテンツの圧縮抵抗の優先順位
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] iPhone - Grand Central Dispatch メインスレッド
-
NSMutableArray の挿入・削除の観察
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swift のプロトコル: メソッドがスーパークラスのメソッドをオーバーライドしない。
-
[解決済み] NSOrderedSetが生成するアクセサで例外が発生する。
-
[解決済み】Core Data vs SQLite 3 [終了しました。]
-
[解決済み] NSUserDefaultsにNSDateを格納する最適な方法は何ですか?
-
[解決済み] CFStringRefをNSStringに変換する方法は?
-
[解決済み] EXC_BREAKPOINT(SIGTRAP)」例外はデバッグ用ブレークポイントが原因か?
-
[解決済み] NSStringインスタンスがNSArrayに含まれるかどうかをチェックする。
-
[解決済み] Swiftでアプリ名を取得する
-
NSURLを使ったファイル存在のテスト
-
NSStringから非英数字を取り除く