Pregunta

considere un programa con hilos óptima que se ejecuta en un servidor dedicado, por lo que si un hilo se bloquea Todavía no hay otros (casi) a la espera de tiempo de CPU. hace bloqueo de bucle proporcionan un mejor rendimiento que mutex en todos los casos posibles en tales circunstancias?

[EDIT] algunas explicaciones: ya que no hay competencia por tiempo de CPU entre hilos, hilo puede utilizar el bloqueo de giro w / o cualquier otro impacto en el rendimiento hilo. y el bloqueo de giro no cambia al modo que puede ser lo suficientemente pesado de espera (al menos en las ventanas, idk cómo funciona en Linux)

¿Fue útil?

Solución

Su premisa no es muy realista. Tal vez su proceso tiene el número óptimo de las discusiones, el resto al sistema operativo tiene muchos cientos de otros hilos. Algunos de los cuales podría estar listo para correr y con mucho gusto agarrar un núcleo de CPU cuando sus rendimientos hilo. Por otra parte, si el hilo está a punto de ser bloqueado, es probable que ocurra debido a un bloqueo mantenido por uno de los otros hilos en su proceso. Lo que podría liberarlo durante el tiempo de giro de espera. El número de procesos no es relevante para eso. Por lo tanto, sigue teniendo sentido spin-espera.

Otros consejos

creo que spinlock va a funcionar mejor en este caso, de mutexe no son realmente necesarios a menos que usted está tratando de optimizar el código y depende de distintos momentos de E / S, etc ... También hizo un punto sobre la espera buena de modo.

Spinlock presumiblemente sería más óptimo, ya que no hay transición al núcleo. Pero el escenario es tan artificial que yo sugeriría no tratar de aplicarlo al código de la vida real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top