Un pezzo di codice è thread-safe se manipola solo le strutture di dati in un modo che consente l'esecuzione coerente di questo codice da più thread. Un codice può essere thread-safe, condizionatamente sicuro (mutua esclusione richiesta) o non sicuro (può essere utilizzato in sicurezza solo da un thread).