Question

Sous Windows, je peux faire :

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

Comment puis-je faire la même chose sur *nix ?

Était-ce utile?

La solution

Essayer:

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

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

Notez que vous devez être exécuté en tant que superutilisateur pour que cela fonctionne.

(pour plus d'informations, tapez « man setpriority » à l'invite.)

Autres conseils

Si vous faites quelque chose comme ça sous Unix, vous souhaitez (en tant que root) modifier votre tâche et définir le bit s.Ensuite, vous pouvez changer sous qui vous exécutez, quelle est votre priorité, la planification de vos threads, etc.lors de l'exécution.

C'est génial tant que vous n'écrivez pas une application massivement multithread contenant un bug afin que vous preniez le contrôle d'un boîtier de 48 CPU et que personne ne puisse vous arrêter car chaque CPU tourne à 100% avec tous les threads définis sur SHED_FIFO ( s'exécute jusqu'à la fin) exécuté en tant que root.

Nan ..Je ne parlerais pas d'expérience....

@allain

Pouvez-vous réduire la priorité de votre propre processus sans être superutilisateur ?

Bien sûr.Sachez cependant qu'il s'agit d'une rue à sens unique.Vous ne pouvez même pas revenir à votre point de départ.Et même des réductions de priorité relativement faibles peuvent avoir des effets étonnamment importants sur le temps d'exécution lorsque le système est soumis à une charge importante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top