Size: a a a

2020 June 22

S

Serg in pro.cxx
когда один читает, другой пишет по выровненному адресу - на  современных платформах это выглядит атомарно
источник

S

Serg in pro.cxx
просто CPU обменивается с памяться не байтами, а пакетами
источник

m

magras in pro.cxx
Я правильно понимаю, речь идет о случае, когда между потоками есть какой-то другой механизм синхронизации исключающий парадлелльную запись?
источник

S

Serg in pro.cxx
простой пример: кольцевой буфер: нет в нём параллельной записи
источник

m

magras in pro.cxx
Serg
простой пример: кольцевой буфер: нет в нём параллельной записи
Не согласен. При опустошении и переполнении буфера producer и consumer будут вынуждены смотреть на оба указателя (начало и конец). То есть кто-то может читать чужой указатель в то время как другой изменяет его.
источник

m

magras in pro.cxx
*для корректной обработки опустошения/переполнения
источник

S

Serg in pro.cxx
один читатель/один писатель  уже не требуют логики atomic
источник

m

magras in pro.cxx
Serg
один читатель/один писатель  уже не требуют логики atomic
По стандарту требует.
источник

S

Serg in pro.cxx
atomic необходим когда писателей >1
источник

S

Serg in pro.cxx
magras
По стандарту требует.
где именно?
источник

m

magras in pro.cxx
Serg
где именно?
Если достаточно ссылки на cppref:

When an evaluation of an expression writes to a memory location and another evaluation reads or modifies the same memory location, the expressions are said to conflict. A program that has two conflicting evaluations has a data race unless

   both evaluations execute on the same thread or in the same signal handler, or
   both conflicting evaluations are atomic operations (see std::atomic), or
   one of the conflicting evaluations happens-before another (see std::memory_order)

If a data race occurs, the behavior of the program is undefined.
источник

DB

Dmitry Berkut in pro.cxx
Есть ли тут преподаватели C++?
Недавно закончил разрабатывать курс по STL, по которому собираюсь проводить бесплатные вебинары, и сейчас нахожусь на этапе поиска независимых ревьюверов.
Возможно найдётся желающий)
Курс достаточно объёмный, 400 слайдов и 8 практических задач. Ориентирован на middle разработчиков.
источник

S

Serg in pro.cxx
magras
Если достаточно ссылки на cppref:

When an evaluation of an expression writes to a memory location and another evaluation reads or modifies the same memory location, the expressions are said to conflict. A program that has two conflicting evaluations has a data race unless

   both evaluations execute on the same thread or in the same signal handler, or
   both conflicting evaluations are atomic operations (see std::atomic), or
   one of the conflicting evaluations happens-before another (see std::memory_order)

If a data race occurs, the behavior of the program is undefined.
>one of the conflicting evaluations happens-before another (see std::memory_order)
ну это предложение же поясняет что можно
источник

S

Serg in pro.cxx
в общем реализация максимально эффективной кольцевой очереди возможна без атомиков и по стандарту
источник

ПК

Побитый Кирпич... in pro.cxx
Serg
в общем реализация максимально эффективной кольцевой очереди возможна без атомиков и по стандарту
happens-before ты по стандарту (читай портабельно) никак не сделаешь без атомиков, мьютексов, join-ов и т.д., которые такую гарантию как раз дают
источник

AT

Andrew Titov in pro.cxx
Serg
>one of the conflicting evaluations happens-before another (see std::memory_order)
ну это предложение же поясняет что можно
Как именно поясняет?
источник

S

Serg in pro.cxx
читающий thread устраивают оба случая: что он прочитал переменную и до записи и после
источник

S

Serg in pro.cxx
оба они корректны
источник

m

magras in pro.cxx
Побитый Кирпич
happens-before ты по стандарту (читай портабельно) никак не сделаешь без атомиков, мьютексов, join-ов и т.д., которые такую гарантию как раз дают
volatile от ms обещает rel/ac.
источник

ПК

Побитый Кирпич... in pro.cxx
Serg
читающий thread устраивают оба случая: что он прочитал переменную и до записи и после
Да, но с точки зрения стандарта такая ситуация некорректа
источник