Frage

Unter Windows kann ich Folgendes tun:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

Wie kann ich das Gleiche auf *nix machen?

War es hilfreich?

Lösung

Versuchen:

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

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

Beachten Sie, dass Sie als Superuser ausgeführt werden müssen, damit dies funktioniert.

(Für weitere Informationen geben Sie an der Eingabeaufforderung „man setpriority“ ein.)

Andere Tipps

Wenn Sie so etwas unter Unix tun, möchten Sie (als Root) Ihre Aufgabe chmodisieren und das s-Bit setzen.Dann können Sie ändern, als wen Sie laufen, was Ihre Priorität ist, Ihre Thread-Planung usw.zur Laufzeit.

Es ist großartig, solange Sie keine massive Multithread-App mit einem Fehler darin schreiben, sodass Sie eine 48-CPU-Box übernehmen und niemand Sie herunterfahren kann, weil jede CPU zu 100 % läuft und alle Threads auf SHED_FIFO eingestellt sind ( läuft bis zum Abschluss) wird als Root ausgeführt.

Nein..Ich würde nicht aus Erfahrung sprechen ...

@allain

Können Sie die Priorität Ihres eigenen Prozesses senken, ohne Superuser zu sein?

Sicher.Beachten Sie jedoch, dass dies eine Einbahnstraße ist.Sie können nicht einmal dorthin zurückkehren, wo Sie angefangen haben.Und selbst relativ kleine Reduzierungen der Priorität können verblüffend große Auswirkungen auf die Laufzeit haben, wenn das System stark ausgelastet ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top