Size: a a a

2020 November 13

d

disba1ancer in pro.cxx
Ioann_V
как можно поправить этот баг? Использовать внутри спин блокировки атомарные операции?
А atomic_flag в качестве спина не пойдет?
источник

I

Ioann_V in pro.cxx
disba1ancer
А atomic_flag в качестве спина не пойдет?
со спином все ок, он системный
источник

d

disba1ancer in pro.cxx
Ioann_V
со спином все ок, он системный
А почему ты вообще читаешь данные под спином без его блокировки?
источник

I

Ioann_V in pro.cxx
disba1ancer
А почему ты вообще читаешь данные под спином без его блокировки?
данные из структуры данных? Дис пока ты мимо скорее всего с причинами.
источник

d

disba1ancer in pro.cxx
Ioann_V
данные из структуры данных? Дис пока ты мимо скорее всего с причинами.
Я просто пример не понял до конца
источник

I

Ioann_V in pro.cxx
Ща Андрей мне подскажет, 100%
источник

AK

Andrei K in pro.cxx
Можно после get_elem попробовать воткнуть std::atomic_thread_fence(std::memory_order_seq_cst);
источник

AK

Andrei K in pro.cxx
Но вообще не очень понятно что там именно в коде происходит, надо больше контекста, увы.
источник

I

Ioann_V in pro.cxx
Andrei K
Можно после get_elem попробовать воткнуть std::atomic_thread_fence(std::memory_order_seq_cst);
а разве в спинлоке так не делается?
источник

I

Ioann_V in pro.cxx
а, ну не так нету там да
источник

I

Ioann_V in pro.cxx
там просто атомик флаг
источник

d

disba1ancer in pro.cxx
Ioann_V
а разве в спинлоке так не делается?
Ты получаешь структуру со спином из какого-то метода?
источник

AK

Andrei K in pro.cxx
Там может быть слабее гарантия, а еще там может быть вызов уже после того как получен неправильный спинлок и тогда на это пофиг.
источник

AK

Andrei K in pro.cxx
А вообще, зачем в юзерском коде спинлок?
источник

d

disba1ancer in pro.cxx
Ioann_V
а разве в спинлоке так не делается?
В нормальном спине должно
источник

I

Ioann_V in pro.cxx
Andrei K
А вообще, зачем в юзерском коде спинлок?
это не юзер код, это кернел код
источник

AK

Andrei K in pro.cxx
А...
источник

I

Ioann_V in pro.cxx
из за этого бага вообще какая то часть не работает как надо ТТ
источник

m

magras in pro.cxx
Andrei K
Можно после get_elem попробовать воткнуть std::atomic_thread_fence(std::memory_order_seq_cst);
Если мне не изменяет память, фенсы синхронизируются только с фенсами (в том числе с собой). Поэтому мне кажется без второго фенса при отпускании лока это не будет работать.
источник

AK

Andrei K in pro.cxx
Я думал, что там проблема что до первого фенса уже проблема. В анлоке по идее должен стоят уже.
источник