Como executar quantidade limitada de instâncias do programa?

0

Por exemplo, eu tenho cerca de 14000 arquivos que preciso processar Agora eu estou fazendo isso com

for %%a in (*.OGG) do revorb.exe "%%a"

Isso roda tudo que é revertido um após o outro. Eu tenho processador quad, então eu gostaria de executar quatro instâncias de revorb ao mesmo tempo, mas não mais que quatro. Eu tentei

for %%a in (*.OGG) do start revorb.exe "%%a"

e causou BSOD. Existe outra maneira de executar quatro tarefas em paralelo?

    
por korasov 10.01.2016 / 12:05

1 resposta

2

Tanto quanto eu sei isso não pode ser feito a partir da linha de comando ou programa em lotes no Windows. Isso ocorre porque você não pode controlar a partir da linha de comando que núcleo é atribuído a um determinado trabalho. Você só pode fazer isso quando o aplicativo já estiver em execução . A maneira "certa" de usar núcleos diferentes é pelo aplicativo ou programa que faz o trabalho (intensivo do processador). Aplicativos usam multithreading para usar diferentes núcleos ao mesmo tempo. Como o multithreading torna o código mais complexo, nem todos os aplicativos implementam o multithreading.

Para codificação de áudio / vídeo, o multithreading realmente vale a pena. Em seu cenário, a maneira "certa" de acelerar é usar todos os núcleos para cada arquivo usando multithreading em vez de usar vários threads / núcleos para instâncias do programa, codificando arquivos diferentes .

A solução adequada é usar um codificador que faça uso de todos os núcleos para cada arquivo que ele codifica . Por exemplo, o Libav ou o Handbrake seriam ferramentas adequadas por esta.

    
por 10.01.2016 / 13:23