es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Debería utilizar mutex en lugar de canales para el código crítico de rendimiento?

Estoy leyendo el libro “Concurrency in Go” ahora y este árbol de decisiones está diseñado para enseñarnos a elegir “primitivas” o “canales”.

¿Es una sección crítica para el rendimiento?

Esto absolutamente no significa “quiero que mi programa sea eficiente, por lo tanto solo usaré mutex”. Más bien, si tienes una sección de tu programa que has perfilado y resulta ser un cuello de botella importante que es órdenes de magnitud más lento que el resto del programa, el uso de primitivas de sincronización de acceso a memoria puede ayudar a que esta sección crítica funcione bajo carga. Esto se debe a que los canales utilizan sincronización de acceso a memoria para operar, por lo tanto pueden ser más lentos. Sin embargo, antes de considerar esto, una sección crítica para el rendimiento podría indicar que necesitamos reestructurar nuestro programa.

Pero aún no explica por qué deberíamos usar “canales”, porque el “rendimiento” siempre es importante, así que “quiero que mi programa sea eficiente, por lo tanto solo usaré mutex”.

Así que todavía no sé cómo elegir entre usar mutexes o canales.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El árbol de decisiones en la imagen está diseñado para enseñarnos si debemos utilizar primitivas o canales en un escenario determinado. Una de las consideraciones principales a tener en cuenta es si la sección en cuestión es crítica en cuanto al rendimiento. Si lo es, utilizar primitivas de sincronización de acceso a memoria puede ayudar a que esta sección crítica tenga un mejor rendimiento bajo carga, ya que los canales utilizan sincronización de acceso a memoria para operar y pueden ser más lentos. Sin embargo, cabe destacar que utilizar mutex no debería ser una elección predeterminada por motivos de rendimiento. En su lugar, solo debería considerarse después de perfilar e identificar problemas de rendimiento en una sección particular del código. En general, la decisión de utilizar mutex o canales depende en última instancia de los requisitos específicos y las limitaciones de la tarea en cuestión.

Comments are closed.