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

Можете подсказать, в многопоточной разработке с использованием lock-free алгоритмов и

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

12 ответов

5 просмотров

> Строя барьеры так, чтобы они точно помогали избавиться от реордеринга компилятором не очень понятен вопрос, если речь про C/C++, то речь идёт о программировании виртуальной машины, и гарантии в барьерах атомиков распространяются на итоговый сгенерированный код

Zopich- Автор вопроса
Constantine Drozdov
> Строя барьеры так, чтобы они точно помогали изба...

Имеется в виду код, кт в теории может соблюдать порядок проверки каких-то флагов, но не соблюдать порядок их инициализации относителтно друг друга. (Потому что они например в разных потоках инциализируются и оба получаются release). Условно говоря, они могут порождать ситуацию, когда f1 у одного процессора true, f2 - false, а у другого наоборот. Фиксится ли это самой системой (каким-нибудь умным протоколом)?

Zopich
Имеется в виду код, кт в теории может соблюдать по...

Я о чём пытаюсь сказать. Если формально C/C++ код допускает такое состояние (а, как я понимаю, запись с release его допускает), то компилятор считает такой результат допустимым, иначе нет

Zopich
Имеется в виду код, кт в теории может соблюдать по...

То есть нет никакой разницы между "ограничениями для компилятора" и "ограничениями, которые соблюдаются в результирующем коде", если речь не идёт о volatile-операциях

Что именно подразумевается под "париться"?

Zopich- Автор вопроса
Dmitriy [Отпуск]
Что именно подразумевается под "париться"?

Ну писать таким образом чтобы быть уверенным, что такой ситации не будет

Zopich
Ну писать таким образом чтобы быть уверенным, что ...

Какой "такой"? Я все еще не вижу конкретики, которую можно обсудить в рамках Стандарта)

Zopich- Автор вопроса
Dmitriy [Отпуск]
Какой "такой"? Я все еще не вижу конкретики, кото...

При которой разные ядра в какой-то тик видят разные значения, ща найду пример и мб вы мне объясните что я неправильно понял

Zopich- Автор вопроса
Constantine Drozdov
То есть нет никакой разницы между "ограничениями д...

https://github.com/anthonywilliams/ccia_code_samples/blob/main/listings/listing_5.7.cpp - там мало строк, это из уильямса, кт утверждает, что тут ассерт может и сработать, хотя для компилятора все ясно в плане реордеринга, для процессора может быть ситуация с противоположными значениями. Подробно он не называет причину, но как я понял - инвалидация кэшей. Вот тут то и вопрос, а нужно ли о таком переживать, если есть MESI? Иначе я не понимаю почему assert может и сработать :/

Zopich
https://github.com/anthonywilliams/ccia_code_sampl...

нужно переживать хотя бы потому, что с точки зрения компилятора это возможный результат исполнения

Zopich- Автор вопроса
Constantine Drozdov
нужно переживать хотя бы потому, что с точки зрени...

Но почему? Не может же быть ситации чтобы в последнем работающем read было одно значение true, но не было другого? Они ж атамарно работают

Zopich
Но почему? Не может же быть ситации чтобы в послед...

Хм... вы физику СТО не учили?) Говорить о том, что Х произошло раньше У, можно только когда между ними возможна причинно-следственная связь, иначе локальные координаты могут их переупорядочить...

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
Есть сайт. Там была древняя версия эво. Стоял плагин, который каждый коммент в Jot делал отдельной страницей. После обновления все слетело, теперь старница открывается отдельн...
Artem
1
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Карта сайта