Как работают барьеры?
От: Arsen.Shnurkov  
Дата: 12.07.17 22:36
Оценка:
Объясните, пожалуйста, что из себя представляют read barrier и write barrier, которые упоминаются в описаниях алгоритмов сборки мусора.

Например, при описании GO GC от Google написано, что write barrier — это небольшая функция, которая гарантирует, что чёрные узлы не ссылаются на белые.

А как это выглядит в ассемблерных командах, и если команд в такой функции несколько — то почему не возникает гонок (race conditions)
Re: Как работают барьеры?
От: placement_new  
Дата: 12.07.17 22:58
Оценка:
Здравствуйте, Arsen.Shnurkov, Вы писали:

http://www.rdrop.com/~paulmck/scalability/paper/whymb.2010.06.07c.pdf
Re: Как работают барьеры?
От: Vain Россия google.ru
Дата: 12.07.17 23:38
Оценка:
Здравствуйте, Arsen.Shnurkov, Вы писали:

AS>Объясните, пожалуйста, что из себя представляют read barrier и write barrier, которые упоминаются в описаниях алгоритмов сборки мусора.

Вкратце, барьеры нужны чтобы гарантировать, что операции чтения/записи начатые до/после барьера завершаться-до/начнутся-не-раньше барьера. Причём здесь алгоритмы сборки мусора — не понятно, ведь это имеет отношения к любым параллельном алгоритмам с доступом к общему ресурсу типа память.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: Как работают барьеры?
От: uzhas Ниоткуда  
Дата: 13.07.17 16:35
Оценка:
Здравствуйте, Vain, Вы писали:

V>Причём здесь алгоритмы сборки мусора


вот тут чуток про GO и барьеры : https://golang.org/src/runtime/mbarrier.go
это просто имплементация барьеров в рантайме GO, я так думаю
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.