起こし損ね(lost wakeup)
待機側がロックの外で条件を見てから待機に入るまでの隙間に通知が通り過ぎ、二度と来ない通知を待ち続けること。
- 概念URI
https://comcomponent.com/knowledge/lost-wakeup/
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- 起こし損ね(lost wakeup)はデッドロック(deadlock)の原因になることがあります。待機側がロックの外で条件を見て待機に入ろうとした隙間に通知側が状態を更新して通知を送ると、通知は待機者のいない条件変数へ向けて発射されて消え、待機側は二度と来ない通知を待ち続ける。 / 確度: 確立した関係 / 確認日: 2026-08-22 出典
- Win32の条件変数は起こし損ね(lost wakeup)を防ぎます。条件変数の待機APIがロックの解放と眠りへの移行を不可分に行うよう設計されているのは、まさにこの隙間を閉じるためで、ロックの規律を守っている限り起きない。 / 確度: 確立した関係 / 確認日: 2026-08-22 出典
- PulseEventは起こし損ね(lost wakeup)の原因になることがあります。待機中のスレッドがカーネルモードAPCで一時的に待機状態から外され、APC完了後に戻ることがある。その一瞬の間にPulseEventが呼ばれると、そのスレッドは「呼ばれた瞬間に待機していた者」に含まれず起こされない。whileループでも救えない、通知そのものが失われる問題である。 / 確度: 確立した関係 / 確認日: 2026-08-22 出典
- カーネルモードAPCは起こし損ね(lost wakeup)の原因になることがあります。カーネルAPCはプリエンプティブに実行され、待機APIを戻すことなくシステムが内部的に待機を中断する。その一瞬の間にPulseEventが呼ばれると、そのスレッドは「呼ばれた瞬間に待機していた者」に含まれず起こされない。カーネルAPCはOSが内部的に使うもので、アプリ側から制御できない。 / 確度: 条件付きの関係 / 確認日: 2026-08-22 出典 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。