スピンロック
以下の例は x86 アセンブリ言語によるスピンロックの実装である。Intel 80386互換プロセッサで動作する。
一方、スピンロックを所有しているスレッドに対してプリエンプトが不可能になるため、主にRTOSにて応答遅延など別の問題が生じる場合がある。
スピンロックを正しく実装することは難しい。なぜなら、競合状態を避けるためにロックの同時アクセスの可能性を考慮しなければならないからである。一般に、これは特別なアセンブリ言語の命令(アトミックなテスト・アンド・セット操作など)を使う必要があり、高級言語やアトミック命令をサポートしていない言語では簡単には実装できない。アトミック命令をサポートしないアーキテクチャや、高級言語で実装しなければならない場合、ピーターソンのアルゴリズムといったアトミックでないロックアルゴリズムを用いることができるかもしれない。ただし、スピンロックより多くのメモリが必要になるかもしれないし、アウト・オブ・オーダー実行が許される場合は高級言語では実装できないかもしれない。
スピンロック所有中にプリエンプト防止のため割り込みを禁止する場合、スピン中の割り込み制御に注意する必要がある。スピン処理中、スピンロックの獲得を試みる際はこれが成功した場合に備えて割り込みを禁止する必要がある。一方、スピンロックの獲得に失敗した場合、そのままスピンするとロックを所有していないにもかかわらず割り込みを禁止しているので割り込みに対する応答遅延が発生する。これを軽減するため、スピンロックの獲得に失敗した場合は一時的に割り込みを許可し、保留していた割り込み処理をすべて済ませた上で再度割り込みを禁止してスピンすることが望ましい。