スレッドセーフ
マルチスレッド環境では、そのような理論上起こりうる状況を考慮し、調停のための排他制御をするなど、慎重なプログラミングが求められる。
データ競合のようなスレッドに関する誤りを含むプログラムは、前述のように異常動作や誤動作を引き起こしうる。スレッドセーフとは、そのような意図しない動作を発生させないことを保証するための、コード実行の安全性に関わる指標である。
しかし、ある操作をスレッドセーフにするためには相応の時間的・空間的オーバーヘッドを伴うため、プログラム上のありとあらゆる操作をスレッドセーフにしようとすることは現実的ではない。不必要な排他制御はプログラムのパフォーマンス低下を招く。例えば単一のスレッドからしかアクセスされないことが分かりきっているデータ領域へのアクセスや、すべてのスレッドから読み取りアクセスのみされる完全定数データ領域へのアクセスを排他制御しようとするのは完全に無駄である。そのため、実際に複数のスレッドによって同時に読み書きアクセスが実行されうるコード領域(危険領域、クリティカルセクション)に関してのみスレッドセーフ化する。