У меня многопоточное приложение, где каждый поток имеет переменную целочисленного типа. Эти переменные увеличиваются во время выполнения программы. В некоторых точках кода нить сравнивает свою переменную подсчета с той, которая имеет другие потоки.
Теперь, поскольку известно, что потоки, запущенные на многоядерном процессоре, могут выполняться не в порядке, поток может не читать ожидаемые значения счетчика других потоков. Для решения этой проблемы одним из способов является использование атомной переменной, такой как std:: atomic < > of С++ 11. Однако выполнение забора памяти при каждом приращении счетчиков значительно замедлит работу программы.
Теперь то, что я хочу сделать, это то, что когда поток собирается читать другой счетчик потоков, только тогда создается забор памяти, и в памяти в этой точке обновляются обновления всех потоков. Как это можно сделать на С++. Я использую Linux и g++.