Pergunta

Eu sei que as saídas de modelos semelhantes em TBB da Intel, além de que eu não posso encontrar qualquer implementação no Google ou na biblioteca Boost.

Foi útil?

Solução

Você pode encontrar discussões sobre esta implementação recurso no impulso lá: http: //lists.boost.org/Archives/boost/2008/11/144803.php

> Podem os N2427 - Tipos C ++ atômicas e Operações ser implementado

> sem a ajuda do compilador?

No.

Eles não precisam ser intrínsecos se você pode escrever assembler inline (ou assembler separadamente compilado para que o assunto), em seguida, você pode escrever o operações próprias diretamente. Vocês pode até ser capaz de usar simples C ++ (Atribuição por exemplo simplesmente para carga ou loja). A razão que você precisa suporte do compilador está impedindo otimizações inadequadas: atômico operações não podem ser otimizados, e geralmente não deve ser reordenadas antes ou depois de qualquer outra operação. Isto significa que mesmo não atômica lojas realizada antes de um atômica armazenar tem que ser completa, e não pode ser cache num registo (por exemplo). Além disso, as cargas que ocorrem após uma operação atômica não pode ser içada antes da op atômica. Em alguns compiladores, apenas usando inline assembler basta. Em outros, uma chamando função externa é suficiente. MSVC fornece _ReadWriteBarrier () para fornecer a ordenação compilador. outros compiladores precisa de outras bandeiras.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top