История изменений
Исправление shkolnick-kun, (текущая версия) :
А что мешало прочесть предыдущие два абзаца на cppreference.com???
Sequential ordering may be necessary for multiple producer-multiple consumer situations where all consumers must observe the actions of all producers occurring in the same order.
Total sequential ordering requires a full memory fence CPU instruction on all multi-core systems. This may become a performance bottleneck since it forces the affected memory accesses to propagate to every core.
Это нужно для решения проблемы «производитель-потребитель», когда каждый потребитель должен знать что сделал каждый производитель.
Так вот, если верить педивикии, то в случае не атомиков проблема решается либо одним мьютеском и двумя условными переменными, либо одним мьютексом и двумя счётными семафорами, а не кучей мьютексов, как у тебя.
Причём решение на атомиках аналогично, ибо требует глобального барьера памяти, т.е. глобальной блокировки на уровне железа.
Исправление shkolnick-kun, :
А что мешало прочесть предыдущие два абзаца на cppreference.com???
Sequential ordering may be necessary for multiple producer-multiple consumer situations where all consumers must observe the actions of all producers occurring in the same order.
Total sequential ordering requires a full memory fence CPU instruction on all multi-core systems. This may become a performance bottleneck since it forces the affected memory accesses to propagate to every core.
Это нужно для решения проблемы «производитель-потребитель», когда каждый потребитель должен знать что сделал каждый производитель.
Так вот, если верить педивикии, то в случае не атомиков проблема решается либо одним мьютеском и двумя условными переменными, либо одним мьютексом и двумя счётными семафорами, а не кучей мьютексов, как у тебя.
Причём решение на атомиках аналогично, ибо требует глобального барьера памяти, т.е. глобальной блокировки на уровне железа.
Исходная версия shkolnick-kun, :
А что мешало прочесть предыдущие два абзаца на cppreference.com???
Sequential ordering may be necessary for multiple producer-multiple consumer situations where all consumers must observe the actions of all producers occurring in the same order.
Total sequential ordering requires a full memory fence CPU instruction on all multi-core systems. This may become a performance bottleneck since it forces the affected memory accesses to propagate to every core.
Это нужно для решения проблемы «производитель-потребитель», когда каждый потребитель должен знать что сделал каждый производитель.
Так вот, если верить педивикии, то в случае не атомиков проблема решается либо одним мьютеском и двумя условными переменными, либо одним мьютексом и двумя счётными семафорами, а не кучей мьютексов, как у тебя.
Причём решение на атомиках аналогично, ибо требует глобального барьера памяти, т.е. глобальной блокировки на уровне железа.