void HelloWorld()
{
static std::atomic<short> static_counter = 0;
short val = ++static_counter; // or val = static_counter++;
}
Если эта функция вызывается из двух потоков,Потокобезопасная локальная переменная
Может локальная переменная val
быть в обоих потоков 1
? или (0, если используется static_counter++
?)
Возможный дубликат http://stackoverflow.com/questions/8102125/is-local-static-variable-initialization-thread-safe-in-c11 – user2807083
@ user2807083 Это не вопрос. Я знаю, что static_counter будет инициализирован безопасно. Для этого требуется стандарт C++ 11. Я говорю о val, который не является статичным. – James
Я думаю, что это ничего не значит о вашем локальном 'var', но все о операторе ++ применительно к статической переменной. Поэтому я думаю, что правильный вопрос: «Является ли приращение атомной переменной потоком безопасным?» – user2807083