Em sua palestra sobre "armas atômicas", Herb Sutter demonstra um exemplo em que um thread principal define um sinalizador de parada usando memory_order_seq_cst e vários threads de trabalho verificam o sinalizador usando memory_order_relaxed. Sutter explica que usar memory_order_relaxed para verificação é aceitável devido ao impacto insignificante na latência. No entanto, ele sugere usar memory_order_seq_cst para a operação que define o sinalizador, sem fornecer um motivo específico.
Entender o conceito de ordenação de memória é crucial aqui. As ordens de memória definem as garantias de visibilidade e sincronização fornecidas pelas operações atômicas. Neste exemplo, o uso de memory_order_seq_cst para definir o sinalizador garante o seguinte:
memory_order_seq_cst garante que a gravação no sinalizador de parada seja visível para todos os threads em tempo hábil, minimizando o risco de condições de corrida.
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