アトミック操作

排他制御

アトミック操作とはひとまとまりになっており分割することのできない操作のことを指します。 アトミックでない操作はで、マルチスレッドの環境においては、操作をしている最中に別の操作が実行される可能性があります。 そのため、マルチスレッドでのプログラミングを行う際には、自分が今行っている操作がアトミックなのかどうかを考慮しないといけない場合があります。 そして、場合によっては排他制御を行ってやる必要があります。

アトミックでない代入操作

代入を 8bit 単位でしか実行できない処理系で 16bit の値を取り扱うことを考えます。 スレッド 1 は 0x8888 を代入し、スレッド 2 は 0xFFFF を代入することを考えます。 この際にスレッド 1 とスレッド 2 の代入処理が同時に行われると以下の様な状況に陥る可能性があります。

排他制御をしていないため、最終的にどちらのスレッドが代入した値が残るかが分からない点は問題ありませんが、この様にどちらの値でもない値が代入される場合があります。

参考資料