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

Доброе утро. Подскажите пожалуйста, почему std::atomic при исполнении операции на

нём не обновляет значение volatile аргумента при неудаче?
https://godbolt.org/z/4YMTM5

20 ответов

13 просмотров

А с чего должен? И не волатильного аргумента, что ли, обновляет?

Артём-Колпаков Автор вопроса
Liber Azerate
А с чего должен? И не волатильного аргумента, что ...

В соответствии со смыслом квалификатора volatile. Если у меня действительно есть нужда в использовании последнего значения, а не кэшированного на момент инициализации операции, мне что, придется цикл в ручную писать?

Артём Колпаков
В соответствии со смыслом квалификатора volatile. ...

Честно, не знаю, чего ты хочешь. И как ты собираешься "действительно" последнее значение получить с обычной, пусть волатильной переменной. Однако в данном случае поведение как и с обычными аргументом, и меняться ничего не должно.

а где тут пример собственно, а то не понятно в чем собственно вопрос

Артём-Колпаков Автор вопроса
std::slavik
а где тут пример собственно, а то не понятно в чем...

vaSum: addss %xmm1, %xmm0 я спрашиваю, почему на каждой попытке обновить значение атомика не делается movss (%rsi), %xmm1

Артём Колпаков
vaSum: addss %xmm1, %xmm0 я спрашиваю, почему на к...

Я не вижу асм, ибо с телефона, но я до сих пор не понял, почему ты ожидаешь, что магия сделается, когда она не должна

Артём-Колпаков Автор вопроса
Liber Azerate
Я не вижу асм, ибо с телефона, но я до сих пор не ...

Я еще раз говорю - volatile. В асм коде я вижу lock-free алгоритм замены значения атомика. В случае крайнего невезения значение переменной in может поменяться бесконечно много раз

std::slavik
так чего вы хотите то от volatile?

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

Артём Колпаков
Я еще раз говорю - volatile. В асм коде я вижу loc...

Это не важно С точки зрения пользователя volatile переменная читается ровно один раз, поэтому компилятор корректный код сгенерил

Артём-Колпаков Автор вопроса
Sergey Skvortsov
Это не важно С точки зрения пользователя volatile ...

Скорее не с точки зрения volatile, а с точки зрения операции https://godbolt.org/z/5K5fq5

атомарные операции не мой конек вообще, но попробую ответить 1) чтение и запись через volatile это часть наблюдаемого поведения программы (intro#abstract-6.1) 2) наблюдаемое поведение должно быть одинаковым при каждом запуске программы (intro#abstract-5) 3) если использовать вашу семантику, то к наблюдаемому поведению программы относится в том числе некое неопределенное количество чтений volatile переменной, что идет вразрез с принципами абстрактного вычислителя как личное мнение я бы добавил, что когда речь заходит о volatile, от компилятора не ждешь, что он подложит такую свинью. все чтения и записи должны быть на виду, потому что это наверняка регистры какого-нибудь устройства

Артём-Колпаков Автор вопроса
Vlad
атомарные операции не мой конек вообще, но попробу...

Я позже кидал код, где вместо volatile параметра используется атомарный параметр, который за время cas-loop'a потенциально также может быть изменён (другим потоком), так что мой вопрос был связан не с volatile, а с атомиком. Иными словами, я должен самостоятельно писать cas-loop дабы сказать, что поведение, которое я желаю наблюдать, является недетерминированным, но это неизменно при каждом запуске? Хотя я еще не разбираюсь в понятии абстрактной машины, мне кажется что здесь говорится, что исполнение должно совпадать с одним из возможных исполнений на абстрактной машине, а здесь вообще упоминается недетерминированность. Благодарю.

Артём Колпаков
Я позже кидал код, где вместо volatile параметра и...

В данном случае вообще не может быть никаких вариантов, посмотри на сигнатуру fetch_add; загрузка из volatile переменной будет ровно один раз при вычислении аргумента

Артём-Колпаков Автор вопроса
Sergey Skvortsov
В данном случае вообще не может быть никаких вариа...

Благодарю, что открыли глаза. Там передача по значению, да уж... А составное присваивание эквивалентно.

Артём-Колпаков Автор вопроса
Артём Колпаков
Благодарю, что открыли глаза. Там передача по знач...

Интересно, если бы там была ссылка, моё предположение было бы верным?..

Артём Колпаков
Я позже кидал код, где вместо volatile параметра и...

1) раз не в volatile дело, то и нет большого смысла рассуждать на уровне абстрактной машины, потому что манипуляции с атомарными переменными не относятся к наблюдаемому поведению сами по себе (intro#abstract-6) 2) соответственно, intro#abstract-5 это не про ваш пример 3) недетерминированность это про unspecified поведение, как гласит intro#abstract-3 вообще, на cppcon'е в этом году хорошо раскрыли тему абстрактной машины

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта