170 похожих чатов

Есть мнение некоторых людей, что если в переменную типа time_t

один поток пишет (через каждые 0,5 сек. сохраняет туда текущее время), а другие потолки оттуда читают, то такую переменную достаточно объявить с volatile. Синхронизации не нужны.
Какого ваше мнение?

24 ответов

5 просмотров

как будто бы синхронизации не нужны только когда ВСЕ только читают?

volatile для этого и придумал, разве нет? Не оптимизировать эту переменную и не надеяться, что переменная не может быть изменена из-вне.

неправда

Дмитрий 🎮
volatile для этого и придумал, разве нет? Не опти...

volatile защищает от оптимизаций, основанных на том, что значение не может измениться "извне"

Дмитрий 🎮
volatile для этого и придумал, разве нет? Не опти...

volatile придуман для MMIO и каких-то странных обработчиков сигналов

это слово рекомендация компилятору, оно с асинхронностью не связано. Такую переменную компилятор не превратит в литерал (константу), если не увидит изменения в коде

Mikail Bagishov
volatile придуман для MMIO и каких-то странных обр...

О, вот как называется это — MMIO, когда регистр или порт в программе это просто переменная. Спасибо, буду теперь знать.

на х86 мб и будет работать, но если писать нормально и гарантированно, лито покрывать mutex либо через атомики

это UB

d7d1cd- Автор вопроса
Андрей Таусинов
как будто бы синхронизации не нужны только когда В...

Те люди говорили что-то типа: единственный негативный эффект, который мы можем получить - это чтение предыдущего значения, а не нового из той переменной. Но когда пишет только один, а другие читают, это тоже гонка (а гонка - 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.

d7d1cd
Те люди говорили что-то типа: единственный негатив...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

d7d1cd
Те люди говорили что-то типа: единственный негатив...

> единственный негативный эффект, который мы можем получить - это чтение предыдущего значения, а не нового из той переменной. чтобы получить такую семантику, надо использовать атомики и std::memory_order::relaxed

Mikail Bagishov
> единственный негативный эффект, который мы можем...

даже с другими ордерингами такое вполне возможно

клюквенный сбитень
даже с другими ордерингами такое вполне возможно

ну да, но это уже в какой-то степени философия начинается

d7d1cd- Автор вопроса
Anatoly Shirokov
Разгоняй эту банду оптимистов

Пытаюсь доказать все выдержками из стандарта.

d7d1cd
Пытаюсь доказать все выдержками из стандарта.

Иногда лучше сразу переходить к оскорблениям

d7d1cd- Автор вопроса
Anatoly Shirokov
Разгоняй эту банду оптимистов

А вообще там есть не паханое поле: многопоточная либа почти вся на валатайл синхронизации 😁

d7d1cd- Автор вопроса
Anatoly Shirokov
Эка тебя занесло

Ну та либа стара как какашки мамонта.

Anatoly Shirokov
Иногда лучше сразу переходить к оскорблениям

"Переубедить вас мне не удастся, поэтому сразу перейду к оскорблениям" ?)

Anatoly Shirokov
Иногда лучше сразу переходить к оскорблениям

вы тоже играли в доту? Опыт доказывает обратное

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
16
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
Карта сайта