Аналогичная проблема заключается в следующем: Ожидают ли потоки блокировки FIFO? Однако в этой проблеме после получения блокировки только один поток выполняет защищенный код, и в конце все потоки будутЯ выполнил код.
Я хотел бы выполнить защищенный код один раз, но для всех потоков, поставленных в очередь для вызова метода в этот момент, вернуть true.
По сути, защищенный код является глобальной контрольной точкой, которая актуальна для всех потоков, ожидающих в данный момент.Т.е. выполнение N последовательных контрольных точек не приведет к достижению большего, чем только 1.
Обратите внимание, что во время выполнения контрольной точки будут другие вызовы метода, которым самим нужен новый вызов контрольной точки.
Я считаю, что я хочу сделать "синхронизированные по пакетам" вызовы глобальной функции.
Как я могу добиться этого в C ++, возможно, с помощью Boost?