Size: a a a

2019 May 17

LS

Lev Serebryakov in freebsd_ru
Ну, в память бы записать надо до вызова
источник

LS

Lev Serebryakov in freebsd_ru
Что бы непореорделось
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
у тебя тут барьера нет
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
там-то ты запишешь, но не на всех архитертурах тут увидишь
источник

LS

Lev Serebryakov in freebsd_ru
Как мне кажется, вот такой код

```
mutex_enter(&arc_adjust_lock);
arc_adjust_needed = B_TRUE;
zthr_wakeup(arc_adjust_zthr);
mutex_exit(&arc_adjust_lock);
```

Смотри, мы пишем простую, не атомарную переменную `
arc_adjust_needed
`
А потом вызываем по сути `arc_adjust_cb_check() ` В ДРУГОМ ПОТОКЕ
источник

LS

Lev Serebryakov in freebsd_ru
А он читает  эту переменную
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
но вообще CV активация как барьер в том треде вроде обязана работать
источник

LS

Lev Serebryakov in freebsd_ru
И что он может начитать?
источник

LS

Lev Serebryakov in freebsd_ru
Да, может…
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
что угодно независимо от порядка мутексов в этом треде
источник

LS

Lev Serebryakov in freebsd_ru
Да.
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
еще раз, в треде с проверкой барьеров у нас полубас нет
источник

LS

Lev Serebryakov in freebsd_ru
потому что оно не atomic
источник

LS

Lev Serebryakov in freebsd_ru
Да.
источник

LS

Lev Serebryakov in freebsd_ru
Ты прав
источник

LS

Lev Serebryakov in freebsd_ru
Хотя может засыпание-просыпание как барьер срабатывает?
источник

LS

Lev Serebryakov in freebsd_ru
Блин, фигово, когда барьеры неявные
источник

LS

Lev Serebryakov in freebsd_ru
Хорошо с новыми атомиками которые срразу видишь в какой модели читаются-пишутся явным образом
источник

LS

Lev Serebryakov in freebsd_ru
А то сидишь, гадаешь — что тут барьер
источник

VO

Vyacheslav Olkhovchenkov in freebsd_ru
кажется вот про это никто нигде не обещал.
источник