Мне нужна помощь в понимании синхронизации с отношением. Чем больше я читаю это, пытаясь понять пример, тем больше я чувствую, что ничего не понимаю. Иногда я чувствую, что вот оно, я понял, но, посмотрев на другой пример, я снова запутался. Пожалуйста, помогите мне исправить это.синхронизирует-с, происходит-до отношения и семантика получения-релиза
Говорят, что операция A синхронизируется с операцией B, если A является хранилищем некоторой атомной переменной m, с семантикой выпуска, B является загрузкой из той же переменной m, с семантикой получения, а B считывает значение хранится А. Он также отметил, что операция Л происходит, перед операцией в, если
- а выполняется на том же потоке, B, и а перед в в программном порядке, или
- A синхронизирует -в B, или
- A происходит до некоторой другой операции C и C происходит до B
ОК. Если мы посмотрим на этот пример
thread0 выполняет | thread1 выполняет
магазин x (выпуск) | нагрузка x (приобретается)
Хранить здесь x здесь синхронизировать с нагрузкой от x? Если у нас есть синхронизация - с отношением здесь, то сохранение x происходит до загрузки с x, поэтому все, что упорядочено до хранения до x в потоке 0, происходит до загрузки из x в потоке 1. Это означает, что здесь выполняется принудительное упорядочение. Это правильно? Но в этом случае я не понимаю, что означает, что «и B читает значение, хранящееся в A», означает? Если поток 1 быстрее, чем поток 0, он может прочитать старое значение. Итак, каковы отношения здесь и есть ли вообще отношения? Если нет, как я могу предоставить эти отношения?
Заранее спасибо.
отличная статья здесь http://preshing.com/20130823/the-synchronizes-with-relation/ – camino