デッカーのアルゴリズム
最近の多くのCPUは命令をアウト・オブ・オーダー実行する。このアルゴリズムは、そのようなCPUを使用したマルチプロセッサマシンではメモリバリアがないと動作しない。
さらに、多くの最適化コンパイラはこのコードを変化させてしまい、プラットフォームがどうであれ、動作できなくなる。多くの言語では、フラグ変数 f0 と f1 がループ内で全くアクセスされないことを検出する。また多くのコンパイラは turn という変数が内側のループ内で更新されないことも検出して変換してしまい、結果として無限ループを形成してしまうだろう。このような変換をされると、このアルゴリズムはアーキテクチャに寄らず動作できなくなる。(訳注:英語版では以上の記述が不正確であるとしてノートで議論されている。具体的には最適化以前に変数がレジスタに置き換わってしまうのを妨げないと意味がないというもの)。
PCI-Expressなどのバスは、読み書きの順序を変更してしまう場合がある。書いた後に読む場合は読む前までに書かれるなどの性質を利用して実装する必要がある場合がある。