Size: a a a

Compiler Development

2020 January 13

I

Ioann_V in Compiler Development
:( Но все равно, спасибо что помог бы, если б не телефон :)
источник

BD

Berkus Decker in Compiler Development
Может народ подтянется кто вчера обсуждал и напишут все!
источник

AT

Alexander Tchitchigin in Compiler Development
Ioann_V
а как меняются правила игры, если в одном потоке происходит сохранение с помощью seq_cst, а чтение в другом - с помощью acq?

ЗЫ дублирование с procxx, ибо там молчат.
Нужно сразу очень вежливо призывать @shipilev 😊
источник

I

Ioann_V in Compiler Development
Я призываю святые земли Хема, что лежат за востоком. Приветствую тебя, @shipilev , живительная кровь Хема, правитель водных путей. Я молюсь, чтобы ты обитал среди нас, в этом твоем храме.
Призыв выполнен, да.
источник

МБ

Михаил Бахтерев in Compiler Development
Berkus Decker
нет, неблокирующие операции (lock-free) обычно медленнее. Гонятся, внезапно, за отсутствием блокировок.
Неожиданное утверждение. Есть ли ссылки на тесты?
источник

BD

Berkus Decker in Compiler Development
Михаил Бахтерев
Неожиданное утверждение. Есть ли ссылки на тесты?
Да, когда буду не с телефона, найду. Или воспользуйтесь системой поиска Google.
источник

EM

Evgenii Moiseenko in Compiler Development
Ioann_V
а как меняются правила игры, если в одном потоке происходит сохранение с помощью seq_cst, а чтение в другом - с помощью acq?

ЗЫ дублирование с procxx, ибо там молчат.
Будут те же гарантии, как и в случае если запись release.
Т.е. если acq чтение прочитает из seq_cst, то между ними произойдёт синхронизация. В общем случае seq_cst даёт все те же гарантии, что и rel/acq плюс ещё доп. гарантии, которые я не берусь объяснять.
источник

I

Ioann_V in Compiler Development
Evgenii Moiseenko
Будут те же гарантии, как и в случае если запись release.
Т.е. если acq чтение прочитает из seq_cst, то между ними произойдёт синхронизация. В общем случае seq_cst даёт все те же гарантии, что и rel/acq плюс ещё доп. гарантии, которые я не берусь объяснять.
ну, то есть. У нас в каком то потоке может произойти запись с seq_cst, в переменную, а в другом потоке произойдет ее чтение, acq, но этот поток НЕ гарантированно прочтет то, что наизменял тот, кто записывал?
источник

EM

Evgenii Moiseenko in Compiler Development
Ioann_V
ну, то есть. У нас в каком то потоке может произойти запись с seq_cst, в переменную, а в другом потоке произойдет ее чтение, acq, но этот поток НЕ гарантированно прочтет то, что наизменял тот, кто записывал?
Да, конечно
источник

I

Ioann_V in Compiler Development
merci, бэкап!
источник

EM

Evgenii Moiseenko in Compiler Development
Ну даже если у вас и запись и чтение будут seq_cst, может случиться так, что чтение "произойдёт до" записи и не увидит её .
источник

I

Ioann_V in Compiler Development
Evgenii Moiseenko
Ну даже если у вас и запись и чтение будут seq_cst, может случиться так, что чтение "произойдёт до" записи и не увидит её .
ну в этом случае то ясно, но я же про случай запись 'до' чтения.
источник

I

Ioann_V in Compiler Development
при сек каст чтении в таком случае, все ок будет, гарантированно.
источник

EM

Evgenii Moiseenko in Compiler Development
Ioann_V
при сек каст чтении в таком случае, все ок будет, гарантированно.
Да
источник

МБ

Михаил Бахтерев in Compiler Development
Berkus Decker
Да, когда буду не с телефона, найду. Или воспользуйтесь системой поиска Google.
Что конкретно искать? Поискал lock-free is slow, нашёл только общие слова. Когда мерял для себя, lock-free структуры были всегда быстрее семафоров или мьютексов. Понятно, что они подходят и для других сценариев, типа инверсии приоритетов. Но я бы сказал, что если в системе возникает инверсия приоритетов, то что-то не так с системой, и её необходимо перерабатывать, а не маскировать проблему lock-free структурами.
источник

I

Ioann_V in Compiler Development
Evgenii Moiseenko
Да
ага, а вот при acq чтении, после записи, то, что я выше писал. Ну это я так, для уточнения. Окей. Спасибище.
источник

EM

Evgenii Moiseenko in Compiler Development
Ioann_V
ага, а вот при acq чтении, после записи, то, что я выше писал. Ну это я так, для уточнения. Окей. Спасибище.
Да, все так
источник

МБ

Михаил Бахтерев in Compiler Development
Ioann_V
а как меняются правила игры, если в одном потоке происходит сохранение с помощью seq_cst, а чтение в другом - с помощью acq?

ЗЫ дублирование с procxx, ибо там молчат.
источник

I

Ioann_V in Compiler Development
Спасибо.
источник

AS

Aleksey Shipilev in Compiler Development
Как не стоит мешать водку с пивом, так и не стоит мешать seqcst с acq/rel! Но выше правильно заметили, что seqcst часто предполагает acq/rel (в Java и C++ это можно формально показать).
источник