プログラミング言語C++のvolatile変数がスレッド間の同期機構として機能するか否かという論点について、有りそうな質問とその答えについての簡易メモ(→id:yohhoy:20121016)の続き。(自身の思考整理用) ある変数がスレッド間の同期機構として機能するためには、下記3つの性質が保証されることが要求される。volatile変数ではこれらのいずれも保証されないため、同期機構としては利用できない。 原子性(atomicity) 可視性(visibility) 順序性(ordering) 原子性の保証 前回記事では、原子性(atomicity)の保証についてのみ説明している。 volatile変数ではダメだという反例を挙げよ volatile変数への読み書きは不可分(atomic)操作であるとは保証されない。仮にレジスタサイズ2byte長のマシンを想定した場合、同環境では4byteサ