途中状態の読み取り
writerがlength・payload・ready flagなど複数フィールドを書き終える前に、readerがその隙間へ入り、新しいフィールドと古いフィールドを組み合わせて読んでしまう現象。
- 概念URI
https://comcomponent.com/knowledge/torn-read/
- 別名・表記
- Torn Read
- 上位概念
- データ競合(data race)
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- 共有メモリは途中状態の読み取りの原因になることがあります。同じfile mapping objectから作ったviewは同時点でcoherentだが、それは読者が常に一貫した更新済みレコードを読めることを意味しないため、同期なしで複数フィールドを読むと途中状態を読んでしまうことがある。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- SPSCリングバッファは途中状態の読み取りを防ぎます。データを書き終えてからindexを進めるという順序が、release/acquireのようなメモリバリアで実際に保証されている場合、SPSCリングバッファはreaderが途中状態を読むことを防ぐ。フラグを最後に書くだけではコンパイラやCPUの並べ替えに対して順序が保証されず、防げない。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- ダブルバッファによるcommitプロトコルは途中状態の読み取りを防ぎます。非公開側で書き終えてからactive indexを切り替える更新がメモリバリアで順序付けられ、かつreaderが読み終えたあとに世代を再確認する場合、ダブルバッファのcommitプロトコルはreaderが途中状態を読むことを防ぐ。順序付けと再確認のどちらを欠いても防げない。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
この概念を扱う記事
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。