Шаблон, который встречается несколько раз в моем коде, является функцией, которая требует вызова определенной функции инициализации, которая в настоящее время решается следующим образом
void doSomething(){
static bool _isInitialized = false;
if( ! _isInitialized ){
initializationFunction();
_isInitialized = true;
}
...
}
Однако этот тип функции не является поточно-ориентированнымнасколько я понимаю, так как может случиться так, что один поток выполняет initializationFunction
, а другой поток начинает делать то же самое, прежде чем _isInitialized
будет установлено в true.
Я новичок в написании многопоточного кода, и мне интересночто было бы хорошим способом сделать такой код потокобезопасным. Одним из возможных решений является блокировка этого кода, но я бы предпочел не использовать блокировки. Есть ли другой (лучший) способ решить эту проблему?