テスト・アンド・セット
ブーリアン値によるテスト・アンド・セット命令は以下の関数のように動作する。この関数全体が必ずアトミックに実行される。つまり、他のプロセスがこの関数の実行中に割り込むことは出来ず、関数実行途中の状態を観測することはできない。これはテスト・アンド・セットがどのように働くのかを示すものであって、ハードウェアのサポートなしにアトミック性は実現できないし、このような単純な関数だけで正しく動作することはない。
(上記コード中でlockは参照型であることに注意)
ミューテックスはこれを利用すると以下のように実装できる。
この関数は複数のプロセスから呼び出すことができるが、クリティカルセクションに入ることができるのは一度にひとつのプロセスだけであることが保証される。この方式は実際のマルチプロセッサマシンでは効率的ではない(定期的にロックを読み書きするため、キャッシュコヒーレンシ問題が発生する)。テスト・アンド・テストアンドセット(後述)がより効率的な解決策となる。ここで示した例はスピンロックであり、whileループでロック獲得をスピンしながら待つようになっている。