Результаты поиска по запросу "memory-barriers"

2 ответа

 Реализация должна гарантировать, что последнее значение (в порядке модификации), назначенное атомарной операцией или операцией синхронизации, станет видимым для всех других потоков за конечный период времени.

оложим, у меня есть темаA что пишет в

0 ответов

, По крайней мере, это мое понимание этого.

у этот пост в связи сГлубокое понимание изменчивости в Java [https://stackoverflow.com/questions/45133832/deep-understanding-of-volatile-in-java] public class Main { private int x; private volatile int g; public void actor1(){ x = 1; g = 1; } ...

0 ответов

, хотя это намного медленнее на Skylake +.

читал «Руководство по оптимизации Intel для архитектуры Intel». Тем не менее, я до сих пор не знаю, когда я должен использовать _mm_sfence() _mm_lfence() _mm_mfence()Может ли кто-нибудь объяснить, когда они должны использоваться при написании ...

ТОП публикаций

1 ответ

Когда использовать блокировку против MemoryBarrier в .NET

В .NETlock Ключевое слово - синтаксический сахар вокругMonitor.Enter а такжеMonitor.Exit, так что вы могли бы сказать, что этот код lock(locker) { // Do something }такой же как Monitor.Enter(locker); try { // Do Something } finally { ...

2 ответа

 стоимость.

тоящее время я читаю C ++ Concurrency in Action Энтони Уильямса. Один из его списков показывает этот код, и он утверждает, что утверждениеz != 0 могу стрелять #include <atomic> #include <thread> #include <assert.h> std::atomic<bool> ...

1 ответ

Спасибо за это объяснение, оно помогло мне понять.

л пример о std :: memory_order_seq_cst из: http://en.cppreference.com/w/cpp/atomic/memory_order [http://en.cppreference.com/w/cpp/atomic/memory_order] #include <thread> #include <atomic> #include <cassert> std::atomic<bool> x = {false}; ...

1 ответ

@HadiBrais: не стесняйтесь пытаться ответить на вопрос более просто. Я могу занять немного больше времени, чтобы сделать более простое резюме. Но, как я уже сказал, я не знаю, спрашивает ли OP о чистых барьерах памяти в теоретической чистой / простой архитектуре, или же они на самом деле спрашивают о барьерах x86 на реальных процессорах x86, которые осложняются всеми этими проблемами. Я не уверен, как сделать это более ясным, чем ответ BeeOnRope на предыдущий вопрос OP, который IMO четко объяснил разницу между OoO exec и переупорядочением памяти.

ал разные вещи о том, как работает барьер памяти. Например, пользовательJohanответ вэтот вопрос [https://stackoverflow.com/questions/42714599/is-a-memory-barrier-an-instruction-that-the-cpu-executes-or-is-it-just-a-marker] говорит, что барьер ...

1 ответ

@R .. Нет, цель эффективного типа хорошо объяснена в обосновании. Никогда не предполагалось, что, например, int * и double * могут иметь псевдоним. Точка, в которой этим стали злоупотреблять, заключалась в том, что такие вещи, как uint16_t *, не могли использовать псевдоним uint32_t * и т. Д., Эффективно превращая все виды аппаратного программирования с gcc в особую угрозу безопасности. В результате мы видим, что встроенные системы, написанные на gcc, разрушаются каждый день, потому что обычный программист на Си даже не знает о строгом псевдониме и эффективном типе. Так было с тех пор, как Cortex M стал мейнстримом.

сматриваю сборку, сгенерированную GCC для ARM Cortex M4, и заметил, чтоatomic_compare_exchange_weak получает дваDMB инструкции, вставленные вокруг условия (собранные с помощью GCC 4.9 с использованием-std=gnu11 -O2): // if ...

2 ответа

Я согласен с анализом @PeterCordes. Я забыл рассмотреть возможность «перезвонить».

лько я знаю, вызов функции действует как барьер компилятора, но не как барьер ЦП. Этотруководство [http://preshing.com/20120913/acquire-and-release-semantics/] говорит следующее: получение блокировки подразумевает семантику получения, в то ...

1 ответ

 более эффективен в SKL, но в конечном итоге все изменилось. Я предполагал, что ранние уархи были более эффективными, но, возможно, нет.

ался найти в Google мой вопрос, но, честно говоря, не знаю, как кратко сформулировать вопрос. Предположим, у меня есть два потока в многоядерной системе Intel. Эти потоки работают на том же узле NUMA. Предположим, что поток 1 записывает в X один ...