¿Work Stealing es siempre el algoritmo de programación de subprocesos a nivel de usuario más apropiado?
He estado investigando diferentes algoritmos de programación para un grupo de subprocesos que estoy implementando. Debido a la naturaleza del problema que estoy resolviendo, puedo asumir que las tareas que se ejecutan en paralelo son independientes y no generan ninguna tarea nueva. Las tareas pueden ser de diferentes tamaños.
Inmediatamente busqué el algoritmo de programación más popular "robo de trabajo" usando calcomanías sin bloqueo para las colas de trabajo locales, y estoy relativamente contento con este enfoque. Sin embargo, me pregunto si hay casos comunes en los que el robo de trabajo no sea el mejor enfoque.
Para este problema en particular, tengo una buena estimación del tamaño de cada tarea individual. El robo de trabajo no hace uso de esta información y me pregunto si hay algún programador que brinde un mejor equilibrio de carga que el robo de trabajo con esta información (obviamente con la misma eficiencia).
NÓTESE BIEN. Esta pregunta se vincula con una previapregunta.