один поток пишет (через каждые 0,5 сек. сохраняет туда текущее время), а другие потолки оттуда читают, то такую переменную достаточно объявить с volatile. Синхронизации не нужны.
Какого ваше мнение?
как будто бы синхронизации не нужны только когда ВСЕ только читают?
volatile для этого и придумал, разве нет? Не оптимизировать эту переменную и не надеяться, что переменная не может быть изменена из-вне.
неправда
volatile защищает от оптимизаций, основанных на том, что значение не может измениться "извне"
volatile придуман для MMIO и каких-то странных обработчиков сигналов
это слово рекомендация компилятору, оно с асинхронностью не связано. Такую переменную компилятор не превратит в литерал (константу), если не увидит изменения в коде
О, вот как называется это — MMIO, когда регистр или порт в программе это просто переменная. Спасибо, буду теперь знать.
на х86 мб и будет работать, но если писать нормально и гарантированно, лито покрывать mutex либо через атомики
это UB
Те люди говорили что-то типа: единственный негативный эффект, который мы можем получить - это чтение предыдущего значения, а не нового из той переменной. Но когда пишет только один, а другие читают, это тоже гонка (а гонка - UB). Вот две выдержки из стандарта: - Two expression evaluations conflict if one of them modifies a memory location and the other one reads or modifies the same memory location. - The execution of a program contains a data race if it contains two potentially concurrent conflicting actions, at least one of which is not atomic, and neither happens before the other, except for the special case for signal handlers described below. Any such data race results in undefined behavior.
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
> единственный негативный эффект, который мы можем получить - это чтение предыдущего значения, а не нового из той переменной. чтобы получить такую семантику, надо использовать атомики и std::memory_order::relaxed
даже с другими ордерингами такое вполне возможно
Разгоняй эту банду оптимистов
ну да, но это уже в какой-то степени философия начинается
Пытаюсь доказать все выдержками из стандарта.
Иногда лучше сразу переходить к оскорблениям
А вообще там есть не паханое поле: многопоточная либа почти вся на валатайл синхронизации 😁
Ну та либа стара как какашки мамонта.
"Переубедить вас мне не удастся, поэтому сразу перейду к оскорблениям" ?)
вы тоже играли в доту? Опыт доказывает обратное
Может он её и писал
Обсуждают сегодня