同期変数と揮発変数が Java でどのように機能するかを調べていますが、 read and write barrier という概念に出会いました。この用語の意味を理解するのを手伝ってくれる人はいますか
質問する
3335 次
4 に答える
7
(上記の回答は完全です)、単純なスキームで概念を実証したいだけです
Thread 1 Thread 2
|
|
| |
| |
| Everything Thread 1 |
| wrote before here |
| |
| |
_ _ _ _ _ _ _ _ _ _ |
( write barrier) (happens before) (read barrier) |
| _ _ _ _ _ _ _ _
|
| is guaranteed |
| to be visible to |
| Thread 2 |
| |
于 2013-08-28T11:10:07.820 に答える
0
読み取りバリアと書き込みバリアは、JVM によって最下位レベルで Java メモリ モデルのセマンティクスを実装するために使用されます。
ただし、Java 言語仕様にはその用語がなく、先行発生関係の観点からのみ説明されています。特に
- 揮発性変数への書き込みは、その同じ変数の後続の読み取りの前に発生します
- 同期ブロックの終了は、同じ同期ブロックの後続のエントリの前に発生します
プログラム内の 2 つのアクション間に先行発生関係が存在する場合、それらの 2 つのアクションが一貫した順序で実行されることが保証されます (つまり、スレッドが 1 つしかなく、直感的でない再順序付けがないかのように)。
正しいマルチスレッド プログラムを作成するために、JVM の実装の詳細を掘り下げる必要はありません。ただし、詳細な情報が必要な場合は、JSR-133 クックブックをお読みください。
于 2013-08-28T11:06:12.770 に答える