Per basi di codice C ++ di grandi dimensioni, nozioni come Herb Sutter " const significa thread-safe " non sembrano aiutare molto, perché ci può essere una quantità schiacciante di codice nelle funzioni const che stanno modificando lo stato senza sincronizzazione. E anche se il codice legacy non fosse un problema, per una classe come ThreadSafeQueue, non vorrai che la funzione push_back sia const solo perché è threadsafe.
Esiste un metodo per tenere traccia di quali funzioni sono concepite come thread-safe, sfruttando idealmente il compilatore per aiutare a rafforzarlo? C'è un modo per simulare un'introduzione di una nuova parola chiave come "threadsafe" che funziona in modo simile a const (cioè il compilatore darà un errore se una funzione denominata "threadsafe" chiama qualsiasi funzione non contrassegnata come threadsafe)?
Forse la mia migliore scommessa è semplicemente taggare le funzioni con un commento standard, magari usando qualcosa come doxygen? Quindi un tag "thread-safe" speciale in un commento al posto della parola chiave const significherebbe "immutabile o internamente sincronizzato".
Qualcuno ha esperienza con il processo di aggiunta del multithreading a un ampio database legacy che potrebbe condividere ciò che ha funzionato e cosa no?