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

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

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

24 ответов

24 просмотра

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

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
> единственный негативный эффект, который мы можем...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта