"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué usar `Memory_order_seq_cst` para configurar un indicador de parada verificado con 'Memory_order_Relaxed`?

¿Por qué usar `Memory_order_seq_cst` para configurar un indicador de parada verificado con 'Memory_order_Relaxed`?

Publicado el 2025-03-23
Navegar:432

Why Use `memory_order_seq_cst` for Setting a Stop Flag Checked with `memory_order_relaxed`?

¿por qué utilizar memoria_order_seq_cst Involucrar:

hilos de asignación de hilo principal hilos

  • trabajadores checking un indicador de parada:
  • while (! stop.load (std :: memoria_order_reled))) { // realizar tareas }

    while (!stop.load(std::memory_order_relaxed))
    {
      // Perform tasks
    }
  • Sutter afirma que usando Memory_order_Relaxed para comprobar el indicador es aceptable debido al impacto mínimo en el retraso de detención de hilo. Sin embargo, la razón para emplear memoria_order_sseq_cst para configurar el indicador de parada sigue sin estar claro.

análisis:

mo_relaxed La latencia de observar los cambios en las banderas Stop o Keep_running es crucial.

No está claro por qué Sutter aconseja contra las operaciones relajadas de la tienda. Sin embargo, el estándar ISO C no especifica el tiempo de visibilidad del almacén o los factores que lo afectan. Las implementaciones solo tienen el mandato para garantizar la visibilidad dentro de un período finito.

Inter-Hermedador de latencia e implementación:

La latencia entre thread está determinada principalmente por la implementación. Implementaciones del mundo real Cerre los mecanismos de coherencia de caché de hardware, que generalmente dan como resultado una baja latencia (decenas de nanosegundos) para la visibilidad de la tienda.

ni seq_cst órdenes de memoria relajadas aceleran la visibilidad del almacén; Simplemente controlan el comportamiento de las operaciones posteriores en relación con la tienda o la carga. Los pedidos más fuertes no aceleran los eventos, sino que retrasan otras operaciones hasta que se mantenga el pedido especificado.

Visibilidad relajada y coherencia de caché de hardware:

en hardware real con coherencia de caché, los pedidos de memoria no mejoran la tiempo de visibilidad del almacén; Ellos únicamente gestionan la capacidad de las operaciones posteriores para volverse a nivel mundial antes del compromiso de almacenamiento.

del orden de memoria relajada para el indicador de detener:

Los beneficios principales de la orden de memoria relajada para verificar el indicador de parada son:

Evitar la ejecución de instrucciones innecesarias, especialmente en ISAS donde adquirir o SEQ_CST requieren instrucciones adicionales (E.G., ARMV7 DMB ISH).

    Conclusión:
  • en este escenario, Migeray_order, Memoria, Memoria, Migery_Rap almacenar la bandera de parada. Memory_order_seq_cst no es necesario para mejorar la sincronización de la visibilidad del almacén. En cambio, se utiliza para hacer cumplir el orden deseado de las operaciones posteriores y evitar problemas con los escritores simultáneos.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3