再入防止ガード(Interlocked.Exchange等)
Interlocked.Exchangeなどの原子的操作でフラグを立て、同じ処理が並行して重複実行されるのを防ぐ実装パターン。
- 概念URI
https://comcomponent.com/knowledge/reentrancy-guard/
- 別名・表記
- reentrancy guard / 多重実行防止
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- 再入防止ガード(Interlocked.Exchange等)はタイマーcallbackの重なりに対する本記事の推奨です。処理が重なりうる場合は、Interlocked.Exchangeなどのガードで多重実行を防ぐ設計にしたほうが安全という本記事の推奨 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- TaskCompletionSourceは再入防止ガード(Interlocked.Exchange等)を利用します。本記事のInvokeOnUiAsyncのように、キャンセル側とBeginInvokeで実行されるデリゲート側のどちらか一方だけが結果を確定できるようにしたい場合、TaskCompletionSourceはInterlocked.Exchangeで用意した「1回ぶんの権利」と組み合わせて使われる。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 再入防止ガード(Interlocked.Exchange等)はキャンセルと実行が競合するレースを防ぎます。「キャンセル済みか確認してからaction()を呼ぶ」という判定と実行を分けた実装だと、確認直後にキャンセルが割り込む一瞬が残り、キューに残っていた古いデリゲートが後から実行されて新しい表示を上書きしてしまう。Interlocked.Exchangeで権利そのものを奪い合わせ、取れなかった側は必ず何もせずに帰るようにすることでこの競合を防ぐ。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。