Что это означает, что заказ на изменение не является полным заказом? - PullRequest
0 голосов
/ 07 апреля 2020

Каждый объект Atomi c имеет свой собственный связанный порядок изменения, , который является общим порядком модификаций, выполненных для этого объекта. Если, с точки зрения некоторого потока, модификация A некоторого атома c M происходит - до модификации B того же атома c M, то в порядке модификации M, A происходит до B.

Обратите внимание, что, хотя каждый объект atomi c имеет свой собственный порядок изменения, это не полный порядок ; разные потоки могут наблюдать модификации различных объектов атома c в разных порядках.

Разве два жирных утверждения не противоречат друг другу? Я нашел их в https://en.cppreference.com/w/c/language/atomic и задавался вопросом, что именно происходит сейчас - это общий заказ или нет? А что именно сейчас гарантировано, а что нет?

1 Ответ

1 голос
/ 07 апреля 2020

Это действительно плохой выбор слов по cppreference. Важное предложение на самом деле является последним предложением: разные потоки могут наблюдать изменения в различных атомах c объектов в разных порядках

Так что если атоми c объект 1 имеет полностью упорядоченную последовательность модификаций AB C, а atomi c объект 2 имеет полностью упорядоченную последовательность DEF, тогда все потоки будут видеть A до C и D перед F, но потоки могут не соглашаться, предшествует ли A раньше D. Следовательно, множество из всех модификаций {A B D C E F} не имеет общего порядка.

Но все потоки, которые соглашаются, что B предшествует E, также соглашаются, что A предшествуют F. Частичные заказы все еще дают некоторые гарантии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...