スレッドセーフ(Thread-safe)は、マルチスレッドプログラミングにおける概念である。あるコードが
スレッドセーフであるという場合、そのコードを複数の
スレッドが同時並
行的に実
行しても問題が発生しないことを意味する。特に、ある共有データへの複数の
スレッドによる
アクセスがあるとき、一度に1つの
スレッドのみがその共有データに
アクセスするようにして安全性を確保しなければならない。
スレッドセーフはマルチスレッドプログラミングにおける重要な要素である。それは従来、
オペレーティングシステムの開発者だけが考慮しなければならない問題だったが、1990年代後半には一般的な問題となった。
マルチスレッドプログラムでは、複数の
スレッドが同じアドレス空間内で同時に実
行される。各
スレッドの
アクセスする
メモリ領域が特に制限されることはなく、全
スレッドが全アドレス空間に
アクセスできる。従って、プログラムを見たときに予測される制御の流れやデータ
アクセスの順序は実際に実
行時に起きることとかけ離れたものとなることが多い。これは「驚き最小の原則」に反している。
スレッドセーフは実際の処理の流れとプログラムの
ソースコードの関連性を強化し、予期しない動作を最小にすることを指向した特性である。