У меня действительно простой вопрос. У меня есть простая переменная типа (например, int). У меня есть один процесс, один поток писем, несколько "readonly" потоков. Как объявить переменную?
-
volatile int
-
std::atomic<int>
-
int
Я ожидаю, что когда поток "writer" изменяет значение, все потоки "чтения" должны видеть новое значение ASAP.
Хорошо читать и записывать переменную одновременно, но я ожидаю, что читатель получит либо старое значение, либо новое значение, а не некоторое "промежуточное" значение.
Я использую однопроцессорную машину Xeon E5 v3. Мне не нужно быть портативным, я запускаю код только на этом сервере, я компилирую его с помощью -march=native -mtune=native
. Производительность очень важна, поэтому я не хочу добавлять "накладные расходы синхронизации", если это абсолютно необходимо.
Если я просто использую int
и одно значение записи потока возможно, что в другом потоке я не вижу "свежее" значение какое-то время?