スレッドセーフ
共有データを何らかのアトミック(不可分)な操作でアクセスすることで他のスレッドから同時アクセスされないことを保証する。これは一般に特別な命令を必要とするが、そのようなハードウェア的な支援を必要としない純粋なソフトウェア的な解としてランポートのパン屋のアルゴリズムのように、ライブラリがそのような機能をサポートしている場合がある。アトミック操作は多くの排他機構の基盤となっている。
一般的にはこれらの手法に以下の手法を結合して使用する。
共有データのスレッド固有のコピーを使用し、そのコピーの値で共有データをアトミックにアップデートする。このようにすることでコードの大部分は並行して実行可能となり、必要最小限の部分だけがシリアライズされる。
なお、ファイルのようなシステム共有リソースに関しては、同じプロセス内で動作する他のスレッドだけでなく、別のプロセス内で動作する他のスレッドからもアクセスされる可能性がある。そのため、場合によっては単にスレッドセーフにするだけでは不十分であり、必要に応じてプロセス間で排他制御する(ファイルロックも参照)。
共有データへのアクセスをシリアライズ(逐次化)することでスレッドセーフを実現する。ただし、複数の共有データにアクセスする際には十分に注意しなければならない(排他制御参照)。複数のスレッドがお互いに異なるリソースをロックし合うと、デッドロックが発生することがある。