スレッドセーフ
スレッドセーフはマルチスレッドプログラミングにおける重要な要素である。それは従来、オペレーティングシステムの開発者だけが考慮しなければならない問題だったが、1990年代後半には一般的な問題となった。マルチスレッドプログラムでは、複数のスレッドが同じアドレス空間内で同時に実行される。各スレッドのアクセスするメモリ領域が特に制限されることはなく、全スレッドが全アドレス空間にアクセスできる。異なるスレッドが同時に同じメモリ領域に読み取りアクセスする場合は問題にならないが、異なるスレッドが同時に同じメモリ領域に読み書きアクセスする場合(少なくともどちらか一方のスレッドが書き込みアクセスする場合)は競合の問題が発生しうる。また、スレッドがどのような順番で実行され、データアクセスがどのような順序で発生するかは、オペレーティングシステムのスケジューリング仕様や、実行時の計算資源の利用状況などといった外因次第であり、完全に予期・予測することはできず非決定論的な動作をする。従って、静的コード解析だけでスレッドに関するプログラム上の誤りを見つけるのは困難となる。