TL;DR

シングルスレッドの環境では正しく動作し、マルチスレッドの環境では呼び出し側が同期処理を行えば正しく動作する状態。

仕組み

C++ のライブラリ Abseil のドキュメントでは、型のスレッド安全性の分類の 1 つとしてスレッドコンパチブルを定義している。その定義では、その型の const な操作をいくつ同時に呼び出してもデータ競合は起きない。一方で、const でない API を呼ぶ場合は、そのインスタンスを外部で同期して使う必要がある。より弱い分類の thread-unsafe は、const な API を同時に呼ぶだけでもデータ競合が起きうるものを指す。

注意点

スレッドセーフとは異なる。スレッドコンパチブルなものは、同期処理をしないままマルチスレッドの環境で使うと正しく動作しない。

関連

出典