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

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

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

12 ответов

11 просмотров

> Строя барьеры так, чтобы они точно помогали избавиться от реордеринга компилятором не очень понятен вопрос, если речь про 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
Но почему? Не может же быть ситации чтобы в послед...

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта