Size: a a a

2020 February 25

p

pragus in Go-go!
Спрошу и тут:


var a, b int32

a = 1
b = 2


Есть ли какие-то гарантии порядка присвоения?
источник

p

pragus in Go-go!
Ну и то же самое для пары атомиков интересно
источник

DP

Daniel Podolsky in Go-go!
Как написали - так и будет
источник

p

pragus in Go-go!
Пока сложилось впечатление, что никто такого не обещает
источник

DP

Daniel Podolsky in Go-go!
Но обещать нам ничего не обещали, это правда
источник

p

pragus in Go-go!
Daniel Podolsky
Как написали - так и будет
Так где гарантии? В том же c/c++ компилятор запросто может переупорядочить
источник

AZ

Artem Zheltak in Go-go!
Вроде компилятор может поменять порядок присвоения тут
источник

S

Sergey in Go-go!
А вы с какой целью интересуетесь? В рамках приведенного кода, или из параллельного потока хотите с a и b работать и рассчитвать на какие-то гарантии?
источник

p

pragus in Go-go!
Sergey
А вы с какой целью интересуетесь? В рамках приведенного кода, или из параллельного потока хотите с a и b работать и рассчитвать на какие-то гарантии?
Можно сказать что параллельный поток. На самом деле ядро смотрит в эту память
источник

DM

Dmitry M in Go-go!
pragus
Пока сложилось впечатление, что никто такого не обещает
Всё что есть https://golang.org/ref/mem#tmp_2
источник

p

pragus in Go-go!
Читал :(
источник

p

pragus in Go-go!
Видимо, надо тестами обложиться на всяких arm
источник

DP

Daniel Podolsky in Go-go!
pragus
Можно сказать что параллельный поток. На самом деле ядро смотрит в эту память
прям любопытно - а как это связано с порядком присвоения?

раз ядро в эту память смотрит - там палюбэ барьер нужен, нет?
источник

p

pragus in Go-go!
Daniel Podolsky
прям любопытно - а как это связано с порядком присвоения?

раз ядро в эту память смотрит - там палюбэ барьер нужен, нет?
А где у нас в го барьеры?
источник

DP

Daniel Podolsky in Go-go!
там, где атомики
источник

DP

Daniel Podolsky in Go-go!
ну и все, что на них верхом - мутексы, каналы, etc
источник

p

pragus in Go-go!
Daniel Podolsky
там, где атомики
Атомики ортогональны барьерам.

Я думаю как вот это переложить на го: https://git.kernel.dk/cgit/liburing/tree/src/include/liburing/barrier.h
источник

RC

Roman Covanyan in Go-go!
pragus
Можно сказать что параллельный поток. На самом деле ядро смотрит в эту память
там все в регистры ляжет. какой порядок у ax и cx?
источник

RC

Roman Covanyan in Go-go!
pragus
Атомики ортогональны барьерам.

Я думаю как вот это переложить на го: https://git.kernel.dk/cgit/liburing/tree/src/include/liburing/barrier.h
насколько я понял, барьеры умеет только рантайм, из юзерского кода это нельзя
источник

RC

Roman Covanyan in Go-go!
точно видел барьеры у глобальных экспортируемых переменных пакета
источник