Size: a a a

2021 February 16

+J

++ Joka; in supapro.cxx
saly epta
терминал
system("chcp 1251") если терминал такое поддерживает xD
источник

VS

Vladimir Suisei in supapro.cxx
saly epta
терминал
Обычно терминалы сразу в утф-8 работают
источник

VS

Vladimir Suisei in supapro.cxx
++ Joka;
system("chcp 1251") если терминал такое поддерживает xD
cmd.exe это не терминал
источник

VS

Vladimir Suisei in supapro.cxx
Блин вроде где-то мелькал универсальный гайд по дружбе кириллицы, винды и с++
источник

CD

Constantine Drozdov in supapro.cxx
++ Joka;
Можете подсказать, в многопоточной разработке с использованием lock-free алгоритмов и атомиков, если у моей архитектуры точно работает протокол MESI, нужно ли мне парится за реордеринг внутри комманд процессора (Конкретнее за инвалидацию кэшей)? Строя барьеры так, чтобы они точно помогали избавиться от реордеринга компилятором.
> Строя барьеры так, чтобы они точно помогали избавиться от реордеринга компилятором
не очень понятен вопрос, если речь про C/C++, то речь идёт о программировании виртуальной машины, и гарантии в барьерах атомиков распространяются на итоговый сгенерированный код
источник

+J

++ Joka; in supapro.cxx
Constantine Drozdov
> Строя барьеры так, чтобы они точно помогали избавиться от реордеринга компилятором
не очень понятен вопрос, если речь про C/C++, то речь идёт о программировании виртуальной машины, и гарантии в барьерах атомиков распространяются на итоговый сгенерированный код
Имеется в виду код, кт в теории может соблюдать порядок проверки каких-то флагов, но не соблюдать порядок их инициализации относителтно друг друга. (Потому что они например в разных потоках инциализируются и оба получаются release). Условно говоря, они могут порождать ситуацию, когда f1 у одного процессора true, f2 - false, а у другого наоборот. Фиксится ли это самой системой (каким-нибудь умным протоколом)?
источник

CD

Constantine Drozdov in supapro.cxx
то есть, скажем, если некоторый барьер запрещает переупорядочивать load двух переменных, то компилятор должен сгенерировать код так, что процессор гарантированно выполнит этот load в этом же порядке
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
jon pedro
Правильно я понимаю, что reinterpret_cast  для случаев подобных тому, когда хочется float поместить в 4 char например побитово?
Для этого есть memcpy или биткаст
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
saly epta
и как заставить принимать кириллицу?
источник

CD

Constantine Drozdov in supapro.cxx
++ Joka;
Имеется в виду код, кт в теории может соблюдать порядок проверки каких-то флагов, но не соблюдать порядок их инициализации относителтно друг друга. (Потому что они например в разных потоках инциализируются и оба получаются release). Условно говоря, они могут порождать ситуацию, когда f1 у одного процессора true, f2 - false, а у другого наоборот. Фиксится ли это самой системой (каким-нибудь умным протоколом)?
Я о чём пытаюсь сказать. Если формально C/C++ код допускает такое состояние (а, как я понимаю, запись с release его допускает), то компилятор считает такой результат допустимым, иначе нет
источник

se

saly epta in supapro.cxx
все равно не принимает кириллицу, только вывод кириллицы исправляется
источник

CD

Constantine Drozdov in supapro.cxx
++ Joka;
Имеется в виду код, кт в теории может соблюдать порядок проверки каких-то флагов, но не соблюдать порядок их инициализации относителтно друг друга. (Потому что они например в разных потоках инциализируются и оба получаются release). Условно говоря, они могут порождать ситуацию, когда f1 у одного процессора true, f2 - false, а у другого наоборот. Фиксится ли это самой системой (каким-нибудь умным протоколом)?
То есть нет никакой разницы между "ограничениями для компилятора" и "ограничениями, которые соблюдаются в результирующем коде", если речь не идёт о volatile-операциях
источник

D

Dmitriy in supapro.cxx
++ Joka;
Можете подсказать, в многопоточной разработке с использованием lock-free алгоритмов и атомиков, если у моей архитектуры точно работает протокол MESI, нужно ли мне парится за реордеринг внутри комманд процессора (Конкретнее за инвалидацию кэшей)? Строя барьеры так, чтобы они точно помогали избавиться от реордеринга компилятором.
Что именно подразумевается под "париться"?
источник

+J

++ Joka; in supapro.cxx
Dmitriy
Что именно подразумевается под "париться"?
Ну писать таким образом чтобы быть уверенным, что такой ситации не будет
источник

D

Dmitriy in supapro.cxx
++ Joka;
Ну писать таким образом чтобы быть уверенным, что такой ситации не будет
Какой "такой"?
Я все еще не вижу конкретики, которую можно обсудить в рамках Стандарта)
источник

+J

++ Joka; in supapro.cxx
Dmitriy
Какой "такой"?
Я все еще не вижу конкретики, которую можно обсудить в рамках Стандарта)
При которой разные ядра в какой-то тик видят разные значения, ща найду пример и мб вы мне объясните что я неправильно понял
источник

+J

++ Joka; in supapro.cxx
А ссылку на гит можно отправить?
источник

D

Dmitriy in supapro.cxx
++ Joka;
А ссылку на гит можно отправить?
Думаю, да
Лучше прямо на строку, не на портянку
источник

+J

++ Joka; in supapro.cxx
Constantine Drozdov
То есть нет никакой разницы между "ограничениями для компилятора" и "ограничениями, которые соблюдаются в результирующем коде", если речь не идёт о volatile-операциях
https://github.com/anthonywilliams/ccia_code_samples/blob/main/listings/listing_5.7.cpp - там мало строк, это из уильямса, кт утверждает, что тут ассерт может и  сработать, хотя для компилятора все ясно в плане реордеринга, для процессора может быть ситуация с противоположными значениями. Подробно он не называет причину, но как я понял - инвалидация кэшей. Вот тут то и вопрос, а нужно ли о таком переживать, если есть MESI? Иначе я не понимаю почему assert может и сработать :/
источник

CD

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