Pergunta

No Windows eu posso fazer:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

Como posso fazer a mesma coisa no *nix?

Foi útil?

Solução

Tentar:

#include <sys/time.h>
#include <sys/resource.h>

int main(){
    setpriority(PRIO_PROCESS, 0, -20);
}

Observe que você deve estar executando como superusuário para que isso funcione.

(para mais informações, digite 'man setpriority' em um prompt.)

Outras dicas

Se estiver fazendo algo assim no Unix, você deseja (como root) chmod sua tarefa e definir o bit s.Então você pode alterar quem você está executando, qual é sua prioridade, sua programação de threads, etc.em tempo de execução.

É ótimo, desde que você não esteja escrevendo um aplicativo multithread massivo com um bug, de modo que você assuma uma caixa de 48 CPUs e ninguém possa desligá-lo porque cada CPU está girando a 100% com todos os threads definidos como SHED_FIFO ( é executado até a conclusão) executando como root.

Não..Eu não estaria falando por experiência própria....

@ allain

Você pode diminuir a prioridade do seu próprio processo sem ser superusuário?

Claro.Esteja ciente, entretanto, que esta é uma via de mão única.Você não consegue nem voltar para onde começou.E mesmo pequenas reduções na prioridade podem ter efeitos surpreendentemente grandes no tempo de execução quando há carga significativa no sistema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top