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

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

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

24 ответов

7 просмотров

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

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
Иногда лучше сразу переходить к оскорблениям

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

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта