Resultados da pesquisa a pedido "memory-barriers"

2 a resposta

É possível que uma loja com memory_order_relaxed nunca alcance outros threads?

Suponha que eu tenha um tópicoAque escreve para umatomic_int x = 0;, usandox.store(1, std::memory_order_relaxed);. Sem outros métodos de sincronização, quanto tempo levaria até que outros threads pudessem ver ...

1 a resposta

As instruções DMB podem ser omitidas com segurança no ARM Cortex M4

Estou passando pelo assembly gerado pelo GCC para um ARM Cortex M4 e notei queatomic_compare_exchange_weak recebe doisDMB instruções inseridas em torno da condição (compiladas com o GCC 4.9 usando-std=gnu11 -O2): // if ...

2 a resposta

Como as funções de bloqueio e desbloqueio do mutex impedem a reordenação da CPU?

Tanto quanto sei, uma chamada de função atua como uma barreira do compilador, mas não como uma barreira da CPU. estetutorial [http://preshing.com/20120913/acquire-and-release-semantics/]diz o seguinte: adquirir um bloqueio implica adquirir ...

1 a resposta

Uma barreira da memória atua tanto como marcador quanto como instrução?

Eu li coisas diferentes sobre como funciona uma barreira de memória. Por exemplo, o usuárioJohana resposta deessa ...

3 a resposta

Barreira de memória versus impacto intertravado na memória armazena em cache o tempo de coerência

Pergunta simplificada: Existe uma diferença no tempo de coerência (ou "liberação") dos caches de memória causada por operações intertravadas em comparação com as barreiras de memória? Vamos considerar em C # - quaisquer operações intertravadas ...

5 a resposta

Compilador reordenando em torno de limites mutex?

Suponha que eu tenha minhas próprias funções não embutidas LockMutex e UnlockMutex, que estão usando algum mutex adequado - como impulso - por dentro. Como o compilador saberá não reordenar outras operações com relação às chamadas para o ...

2 a resposta

Barreira de memória pela instrução lock

Li recentemente sobre barreiras de memória e a questão da reordenação e agora tenho alguma confusão sobre isso. Considere o seguinte cenário: private object _object1 = null; private object _object2 = null; private bool _usingObject1 = false; ...

2 a resposta

O LFENCE está serializando nos processadores AMD?

Nos documentos recentes Intel ISA, olfence instrução foi definida comoserializando o fluxo de instruções (impedindo a execução fora de ordem). Em particular, odescrição [http://felixcloutier.com/x86/LFENCE.html]da instrução inclui esta ...

5 a resposta

Por que o padrão de chamada de evento C # padrão é seguro para threads sem uma barreira de memória ou invalidação de cache? E o código semelhante?

Em C #, este é o código padrão para chamar um evento de maneira segura para threads: var handler = SomethingHappened; if(handler != null) handler(this, e);Onde, potencialmente em outro encadeamento, o método add gerado pelo ...

1 a resposta

Se eu não usar cercas, quanto tempo levaria um núcleo para ver as gravações de outro núcleo?

Eu tenho tentado pesquisar minha pergunta no Google, mas sinceramente não sei como afirmá-la sucintamente. Suponha que eu tenha dois threads em um sistema Intel com vários núcleos. Esses encadeamentos estão em execução no mesmo nó NUMA. Suponha ...