Por que utilizar memória_ordorde_seq_cst para definir a bandeira de parada se verificada com memória_ordorde_relaxed?
em suas "atomic weans" Apresentation, a gemida Sutter mostra Envolvendo:
Trabalhadores checando uma bandeira de parada:
while (!stop.load(std::memory_order_relaxed)) { // Perform tasks }
sutter afirma que o uso de memória_order_relaxed para verificar se o sinalizador é aceitável devido ao impacto mínimo na parada de parada. No entanto, a razão para empregar memória_order_seq_cst para definir a bandeira de parada permanece pouco clara. de observar as alterações nas bandeiras Stop ou Keep_Running é crucial. No entanto, o padrão ISO C não especifica o tempo de visibilidade do armazenamento ou os fatores que o afetam. As implementações são obrigatórias apenas para garantir a visibilidade dentro de um período finito. As implementações C do mundo real aproveitam os mecanismos de coerência do cache de hardware, geralmente resultando em baixa latência (dezenas de nanossegundos) para visibilidade da loja. Eles apenas controlam o comportamento das operações subsequentes em relação à loja ou carga. As ordens mais fortes não aceleram os eventos, mas atrasam outras operações até que a ordem especificada seja mantida. Eles gerenciam apenas a capacidade das operações subsequentes de se tornarem globalmente visíveis antes do compromisso da armazenamento. False.
Evitar a execução desnecessária de instruções, especialmente nos ISAs em que adquirir ou seq_cst cargas requerem instruções adicionais (por exemplo, ARMV7 DMB ISH). armazenando a bandeira de parada. Memory_Order_Seq_Cst não é necessário para melhorar o tempo de visibilidade da loja. Em vez disso, é usado para aplicar a ordem desejada das operações subsequentes e evitar problemas com escritores simultâneos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3