フェッチ・アンド・アッド
一般的なフェッチ・アンド・アッド命令は以下のような関数(擬似コード)と同等の動作をする。ただし、関数全体がアトミック操作として実行され、いかなるプロセスもその途中で割り込むことはできず、関数の途中の状態を見ることはできない。下記の関数は単にフェッチ・アンド・アッドの動作を説明するためのもので、アトミック性を実現するにはハードウェアのサポートを要するので単なる高級言語の関数としては実装できない。
フェッチ・アンド・アッドを使ったミューテックスは以下のように実装される。
以下の条件が満たされている時に、これらのルーチンはミューテックスとして動作する:
Locktype型データ構造は使用の前に関数LockInitで初期化される。
ロックを待っているタスクの数は常にINT_MAXを越えない。
ロックにおいて使われている整数型は継続的にインクリメントされ、最大値の次は最小値に戻る。