Re[54]: Безопасность Rust
От: · Великобритания  
Дата: 07.06.19 17:49
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>>>·>Да. И ведёт к undefined behaviour.

V>>>Докажи.
V>·>

If a data race occurs, the behavior of the program is undefined.

V>Вот как здесь — общий случай, который не относится к частному.
V>Требовалось доказать, что для атомарных операций чтения/записи это тоже верно.
Атомарные операции определены только над атомарными типами. Список атомарных типов приводится явно. Атомарные типы гарантируют отсутствие data race. Это я уже тоже многократно цитировал.

V>·>(с) https://www.modernescpp.com/index.php/race-condition-versus-data-race

V>Учу читать по твоей ссылке, дорого:
V>

V>Race condition:
V>A race condition is a situation, in which the result of an operation depends on the interleaving of certain individual operations.
V>Data race:
V>A data race is a situation, in which at least two threads access a shared variable at the same time. At least on thread tries to modify the variable.

V>Вопросы?
Ты читай до конца и не цитируй фигурно. Ты заявил "data race может быть причиной race condition." с этим я и спорил. На самом деле ровно наоборот:

A race condition can be the reason for a data race


V>>>>>Но может быть и частью алгоритма.

V>>>·>Data race не может быть частью корректного алгоритма, т.к. является undefined behaiour и никакие характеристики алгоритма обеспечить не может.
V>>>Докажи.
V>·>

If a data race occurs, the behavior of the program is undefined.

V>·>(с) https://en.cppreference.com/w/cpp/language/memory_model
V>Докажи верность этого утверждения для атомарно изменяемых переменных.
Я не знаю что такое ты имеешь конкретно "атомарно изменяемых переменных". Есть типы, объекты у которых есть атомарные операции. Эти типы — std::atomic или _Atomic.
Стандарт говорит: A program that has two conflicting evaluations has a data race unless ... both conflicting evaluations are atomic operations (see std::atomic)"
Следовательно, std::atomic не создают data race. И следовательно их поведение не является undefined.

V>·>Доказывать твои фантазии? Упаси боже. Ты глупость сказал, ты и доказывай.

V>Глупости тут говоришь ты.
V>А моей целью было заставить тебя начать думать.
V>Начал бы ты думать и обнаружил бы, что для атомарных типов мьютекс в std::atomic не нужен не спроста.
Разберись что такое is_lock_free. Если есть вопросы, задавай, вместо того чтобы в очередной раз писать некорректное утверждение.

V>И при этом гарантируется отсутствие гонок.

Отсутствие гонок гарантируется для всех std::atomic.

Да, я ещё забыл о std::atomic_flag, в котором по дизайну нет мьютекса и который гарантирует отсутствие data race.

V>При том что достоверно известно, что одновременные чтения и запись в переменную идут.

V>Т.е. прямо согласно определению, это data race.
V>Или не совсем?
описание data race явно упоминает atomic-типы: "data race unless ... atomic".

V>>>Я хочу сказать, что такой код всегда корректный.

V>·>Это твои фантазии.
V>Доказать не в состоянии.
V>Слился.
Я знаю, что ты хочешь сказать. Ты много что болтаешь. Ты это должен доказывать свои высказывания или идти лесом. Доказывать твои фантазии я не собираюсь.

V>·>(с) https://en.cppreference.com/w/c/language/atomic


V>Сравни:

V>they may be modified by two threads concurrently or modified by one and read by another.
V>...
V>A data race is a situation, in which at least two threads access a shared variable at the same time. At least on thread tries to modify the variable.
А слова чуть раньше ты конечно обрезал: "Objects of atomic types are the only objects that are free from data races".

Если ты ещё раз будешь такие фокусы выкидывать, я просто прекращу общение. Это тупо неуважение к собеседнику.

V>Ты уже сравнил определения выше.

V>В чём отличия?
В том что ты внаглую режешь предложения на кусочки. Классическое "Было бы ошибкой думать. В.И.Ленин."

V>Да, и этого достаточно.

V>Но тред не просто так прерывает своё исполнение, а в очень важный для абстрактной машины состояния процессора момент.
V>В какой именно момент, ы?
Это дело операционки, а не яп. Мы обсуждаем яп.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.