Domanda

Su Windows posso fare:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

Come posso fare la stessa cosa su *nix?

È stato utile?

Soluzione

Tentativo:

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

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

Tieni presente che devi essere in esecuzione come superutente affinché funzioni.

(per maggiori informazioni, digitare "man setpriority" quando richiesto.)

Altri suggerimenti

Se stai facendo qualcosa del genere sotto Unix, vuoi (come root) modificare l'attività e impostare il bit s.Quindi puoi cambiare il nome con cui stai correndo, qual è la tua priorità, la pianificazione dei thread, ecc.in fase di esecuzione.

È fantastico finché non stai scrivendo un'app multithread massiccia con un bug in modo da prendere il controllo di un box da 48 CPU e nessuno può spegnerti perché ciascuna CPU gira al 100% con tutti i thread impostati su SHED_FIFO ( viene eseguito fino al completamento) in esecuzione come root.

No...non parlerei per esperienza....

@allain

Puoi abbassare la priorità del tuo processo senza essere un superutente?

Sicuro.Tieni presente, tuttavia, che questa è una strada a senso unico.Non puoi nemmeno tornare al punto di partenza.E anche riduzioni piuttosto piccole della priorità possono avere effetti sorprendentemente grandi sul tempo di esecuzione quando il carico del sistema è significativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top