Javaでの原子操作と原子操作
548 ワード
原子性:すなわち、1つの操作または複数の操作がすべて実行され、実行されるプロセスがいかなる要因によっても中断されないか、または実行されないか.
例えば、32ビットの変数付与プロセスに原子性が備わっていない場合、どのような結果が発生しますか.
もし1つのスレッドがこの文を実行した場合、私はまず1つの32ビットの変数に値を割り当てる2つのプロセスを含むと仮定します:低い16ビットに値を割り当て、高い16ビットに値を割り当てます.
16ビット以下の数値が書き込まれた後、突然中断される場合がある.このとき、iの値を読み出すスレッドがあり、読み込まれたのはエラーのデータです.
原子操作:スレッドスケジューリングメカニズムによって中断されない操作を指します.この操作はいったん開始されると、終了まで実行され、途中でcontext switchはありません.
原子操作は1つのステップであってもよいし、複数の操作ステップであってもよいが、その順序を乱すことはできないし、切断されてその一部だけを実行することもできず、操作全体を原子性の核心的特徴と見なすことができる.
例えば、32ビットの変数付与プロセスに原子性が備わっていない場合、どのような結果が発生しますか.
int i=9;
もし1つのスレッドがこの文を実行した場合、私はまず1つの32ビットの変数に値を割り当てる2つのプロセスを含むと仮定します:低い16ビットに値を割り当て、高い16ビットに値を割り当てます.
16ビット以下の数値が書き込まれた後、突然中断される場合がある.このとき、iの値を読み出すスレッドがあり、読み込まれたのはエラーのデータです.
原子操作:スレッドスケジューリングメカニズムによって中断されない操作を指します.この操作はいったん開始されると、終了まで実行され、途中でcontext switchはありません.
原子操作は1つのステップであってもよいし、複数の操作ステップであってもよいが、その順序を乱すことはできないし、切断されてその一部だけを実行することもできず、操作全体を原子性の核心的特徴と見なすことができる.