Pregunta

Busco una biblioteca de C ++ trabajador multiplataforma maestra / o biblioteca cola de trabajo. La idea general es que mi solicitud crearía una especie de objetos de tarea o trabajo, pasarlas al maestro de trabajo o cola de trabajo, que a su vez ejecutar la obra en hilos o procesos separados. Para proporcionar un poco de contexto, la aplicación es un extractor de CD, y las tareas de las que quiero poner en paralelo son cosas como "vía RIP", "codificar WAV a MP3", etc.

Mis requisitos básicos son:

  • Debe ser compatible con un número configurable de tareas concurrentes.
  • debe ser compatible con las dependencias entre tareas, de manera que las tareas no se ejecuta hasta que todas las tareas que dependen de haber terminado.
  • Debe permitir la cancelación de tareas (o al menos no me impide codificación de cancelación en mis propias tareas).
  • Debe permitir la presentación de informes de estado y el progreso información de vuelta al hilo principal de la aplicación.
  • Debe funcionar en Windows, Mac OS X y Linux
  • Debe ser de código abierto.

Sería especialmente agradable si esta biblioteca también:

  • integrado con el mecanismo de señal / ranura de Qt.
  • apoyado el uso de hilos o Los procesos para la ejecución de tareas.

A modo de analogía, yo estoy buscando algo similar a ExecutorService de Java o alguna otra librería de hilos similares puesta en común, pero en multiplataforma C ++. ¿Alguien sabe de una bestia?

Gracias!

¿Fue útil?

Solución

Creo que esto exige Threading Building Blocks de Intel, que más o menos hace lo que quiere.

Otros consejos

No he utilizado en el tiempo suficiente que no soy positivo si cumple exactamente a sus necesidades, pero echa un vistazo a la entorno de comunicaciones adaptativo (ACE) . Esta biblioteca permite construir objetos "activos" que tienen colas de trabajo y ejecutar su cuerpo principal en sus propios hilos, así como grupos de subprocesos que se pueden compartir amoung objetos. A continuación, puede pasar objetos de trabajo en la cola de los objetos activos para que procesen. Los objetos pueden ser encadenados de distintas maneras. La biblioteca es bastante pesado y tiene mucho que aprender que, pero ha habido un par de libros escritos sobre él y theres una buena cantidad de información de aprendizaje disponibles en línea también. Debe ser capaz de hacer todo lo que quiere y más, mi única preocupación es si posee las interfaces que busca 'fuera de la caja' o si lo que se necesita para construir encima de ella para obtener exactamente lo que está buscando para.

Salida de Intel rel="nofollow Thread Library Building Blocks .

Parece que usted necesita algún tipo de "Sistema de Intercambio de Tiempo".

Hay algunas buenas código abierto por ahí, pero no sé
si se han incorporado en ayuda de la ranura del intervalo QT.

Esta es probablemente una enorme exageración para lo que necesita, pero todavía vale la pena mencionar -
BOINC es un marco distribuido para este tipo de tareas. Hay un servidor principal que da a cabo las tareas a realizar y una nube de trabajadores que hacen su oferta. Es el marco detrás de proyectos como SETI @ Home y muchos otros.

Ver este post para la creación de hilos utilizando la biblioteca de impulso en C ++:

ejemplo simple de enhebrar en C ++

(que es un hilo c ++ a pesar de que el título dice c)

básicamente, crear su propio objeto "maestro" que toma un objeto "ejecutable" y empieza funcionando en un nuevo hilo.

A continuación, puede crear nuevas clases que implementan "ejecutable", y los echan encima a su carro maestro cualquier momento de edad que desea.

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