Un morceau de code est thread-safe s'il ne manipule que les structures de données d'une manière qui permet une exécution cohérente de ce code par plusieurs threads. Un code peut être thread-safe, conditionnellement sûr (exclusion mutuelle requise) ou unsafe (ne peut être utilisé en toute sécurité que par un thread).