Size: a a a

pro.graphon (and gamedev)

2021 April 24

A

Arelav in pro.graphon (and gamedev)
Ну если две инструкции независимы ты не можешь гарантировать мне что первая исполниться позже второй. Ни что не мешает(ну кроме данных тебе гарантий) компилятору или процессору поменять их порядок.
С 17 стандарта с ходу красивый пример как то посложнее привести наверно но все же
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Да, привели пример Однопоточного кода, в котором видимый порядок исполнения инструкций отличается от задаваемого
источник

A

Arelav in pro.graphon (and gamedev)
Ну видимый не будет хотя смотря что ты подразумеваешь под видимым, но правильный видимый это отношение happens before
Ну какой нибудь тупой пример это func(some expr, some expr, some expr)?
источник

A

Arelav in pro.graphon (and gamedev)
Мне просто непонятно для каких ошибок тебе нужно состояние всей системы?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Тут язык гарантий не дает. Соответственно задаваемого порядка в принципе нет
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Поток A и B пишут в M
в какой-то момент А ломается и ему нужно значение в M для восстановления. Что делать?
источник

A

Arelav in pro.graphon (and gamedev)
Ну я про то что текст выглядит одинаково а его исполнение может быть в разном порядке, в данном случае в зависимости от компилятора, но наверняка можно привести пример и с процессором.
источник

A

Arelav in pro.graphon (and gamedev)
Потоки ничего не пишут
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Я спрашиваю, когда видимый порядок отличается от задаваемого. Ты приводишь пример, когда задаваемого нет, и видимый также никак не определен
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Нет, не сможешь с процессором привести пример
источник

A

Arelav in pro.graphon (and gamedev)
Ну хорошо давай так: есть задача А и Б они могут исполнятся конкуретно, и взаимодействуют с неким потоко безопасным объектом м, в какой то момент в Б произошла ошибка, чтобы понять что делать дальше кажется тебе должно быть достаточно той информации что ты знал до ошибки или можешь узнать после, нет необходимости делать stop the world
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Не понял утверждения. В моем абстрактном приложении пишут
источник

A

Arelav in pro.graphon (and gamedev)
Потому что правильное определение видимого порядка и есть задаваемое
источник

A

Arelav in pro.graphon (and gamedev)
Ну ты говоришь главная проблема графа исполнения что нет состояния системы. А потом пишешь что поток а и б пишут. Но у тебя нет потоков которые пишут, это рантайм
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Я своим вопросом доношу до тебя мысль что порядок детерминирован
источник

A

Arelav in pro.graphon (and gamedev)
А я пытаюсь донести до тебя мысль что корректное многопоточное исполнение не особо отличается от однопоточного.
источник

A

Arelav in pro.graphon (and gamedev)
Давай так, что такое для тебя видимый порядок?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
В идеальном мире где потоки исполнения не влияют друг на друга
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
Банальный пример:
Заданный порядок:
SET X 0
PRINT X
SET X 1
PRINT X
Видимый порядок совпадает, если пишется 0 1, иначе не совпадает. То есть когда мы можем наблюдать в какой то момент то, что состояние системы не соответствует тому, что мы задаем командами
источник

A

Arelav in pro.graphon (and gamedev)
Но ведь если пишешь многопоточный код так что у тебя может быть и 1 0 это значит что
1) у тебя нет "видимого" порядка 0 1
2) тебе не важно 0 1 или 1 0
источник