アトミック
読み:アトミック
外語:atomic
原子的、非可分であること。「アトミックな操作」であるというとき、ある操作を行なうときに他者がその操作に割り込めないことを指す。
概要
メモリーあるいはレジスター等の状態の確認とその更新(これを「テスト&セット」と呼ぶ)を例とする。
現在の内容を読み取り→内容を確認し→内容を変更し→その内容を書き込む、この一連の手順は、他のスレッドやプロセスがその間に操作することがないことが保証される必要がある。さもないと、読んで書くまでの間に他のスレッドやプロセスから違う値に書き換えられた場合、このスレッドやプロセスが書き込んだ瞬間に不整合が生じてしまい、正常な動作が妨げられてしまうからである。
そこで、他からの割り込みがない状態にすることを、アトミックにする、という。
特徴
ロック処理
アトミックにするためには、ロック処理が必要である。
オペレーティングシステム(OS)のいくつかの機能では、アトミックであることが保障されているものがあり、このような操作についてはロック処理は不要である。
そうでない場合は、セマフォやミューテックスなどを用いて、アトミックにしなければならない。なお、ロック処理を行なう際には、そのテスト&セットの操作全体がアトミックになっていないと完全なロックにならないことに注意する必要がある。
プログラミング
プログラミング言語の機能として、あるいはライブラリなどとして、アトミック変数を作成し使用することができる機能が提供されることがある。
- atomic_t ‐ Linuxカーネルで提供されているint型のアトミック変数
- _Atomic ‐ C11から追加されたアトミック変数を表わす予約語
- std::atomic ‐ C++11からSTLに追加されたアトミック変数のクラス
再検索