Mestre / trabalhador de C ++

Eu estou procurando uma biblioteca mestre / trabalhador de C ++ de plataforma cruzada ou biblioteca de fila de trabalho. A ideia geral é que meu aplicativo criaria algum tipo de objeto Tarefa ou Trabalho, passaria para o mestre de trabalho ou para a fila de trabalho, o que, por sua vez, executaria o trabalho em segmentos ou processos separados. Para fornecer um pouco de contexto, o aplicativo é um ripper de CD, e as tarefas que eu quero paralelizar são coisas como "rip track", "codificar WAV para Mp3", etc.

Meus requisitos básicos são:

Deve suportar um número configurável de tarefas simultâneas.Deve suportar dependências entre tarefas, de forma que as tarefas não sejam executadas até que todas as tarefas das quais eles dependem tenham sido concluídas.Deve permitir o cancelamento de tarefas (ou pelo menos não me impedir de codificar o cancelamento em minhas próprias tarefas).Deve permitir o relato de status e informações de progresso de volta ao thread principal do aplicativo.Deve funcionar no Windows, Mac OS X e LinuxDeve ser de código aberto.

Seria especialmente bom se essa biblioteca também:

Integrado com o mecanismo de sinal / slot do Qt.Suportado o uso de threadsou processos para executar tarefas.

Por analogia, estou procurando algo semelhante ao ExecutorService do Java ou a alguma outra biblioteca de conjunto de encadeamentos semelhante, mas em C ++ de plataforma cruzada. Alguém sabe de tal animal?

Obrigado!

questionAnswers(6)

yourAnswerToTheQuestion