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 suponer que las tareas que se ejecutan en paralelo son independientes y no generan nuevas tareas. Las tareas pueden ser de diferentes tamaños.¿Work Stealing es siempre el algoritmo de programación de hilos a nivel de usuario más apropiado?
Fui de inmediato para el algoritmo de programación más popular "robo de trabajo" utilizando deques sin bloqueo para las colas de trabajos locales, y estoy relativamente satisfecho 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 planificador que proporcione un mejor equilibrio de carga que el robo de trabajo con esta información (obviamente con la misma eficacia).
NB. Esta pregunta se relaciona con un question anterior.
Conozco muy poco sobre este subependiente, pero tal vez algunas de las respuestas a esta pregunta relacionada sean útiles: http://stackoverflow.com/questions/2552810/work-stealing-vs-work-shrugging –