Вопросы по теме 'memory-fences'

Как на самом деле работают заборы в C++
Я изо всех сил пытался понять, как заборы на самом деле заставляют код синхронизироваться. например, скажем, у меня есть этот код bool x = false; std::atomic<bool> y; std::atomic<int> z; void write_x_then_y() { x = true;...
300 просмотров
schedule 27.10.2022

Атомарные и неатомарные операции чтения/записи OpenMP производят одни и те же инструкции на x86_64.
Согласно спецификации OpenMP (v4.0), следующая программа содержит возможную гонку данных из-за несинхронизированного чтения/записи i : int i{0}; // std::atomic<int> i{0}; void write() { // #pragma omp atomic write // seq_cst i = 1; }...
596 просмотров
schedule 23.02.2022

Кэшируются ли переменные, используемые System.Threading.Timer?
Я пытаюсь устранить неполадки в процессе, который таинственным образом останавливается, и я пытаюсь определить, может ли у нас возникнуть проблема с кэшированием переменной и ее повторным чтением. В моем сценарии у меня есть операция, которая...
72 просмотров

Есть ли неявный барьер памяти с отношениями synchronized-with в thread :: join?
У меня есть работающий код, который запускает несколько потоков, выполняющих некоторые операции, и если какой-либо из них терпит неудачу, они устанавливают для общей переменной значение false . Затем основной поток присоединяется ко всем рабочим...
674 просмотров

Является ли барьер памяти инструкцией, которую выполняет процессор, или это просто маркер?
Пытаюсь понять, что такое барьер памяти. На основании того, что я знаю до сих пор, барьер памяти (например: mfence ) используется для предотвращения переупорядочения инструкций от до к после и от после до до барьера памяти. Это пример...
5393 просмотров

Какие именно ограждения предоставляются std :: memory_order в C ++?
Насколько я знаю, перечисление std :: memory_order обеспечивает ограждения памяти, но мне нужно быть уверенным в ограждениях, которые предоставляются каждым элементом перечисления std :: memory_order. Ниже я объясняю, как я понимаю каждый элемент...
422 просмотров

Обеспечивают ли заблокированные инструкции барьер между слабоупорядоченными доступами?
В x86 инструкции с префиксом lock , такие как lock cmpxchg , обеспечивают семантику барьера в дополнение к своей атомарной операции: для нормального доступа к памяти в областях памяти с обратной записью операции чтения и записи не...
555 просмотров

Могу ли я в этом случае не использовать освобождение и получение барьеров?
В этом руководстве говорится следующее: каждая загрузка на x86/64 уже подразумевает семантику получения, а каждое сохранение подразумевает семантику выпуска. Теперь скажем, у меня есть следующий код (я написал свои вопросы в...
185 просмотров