Prozessorlast in Schleife verringern



  • Guten Tag,

    In meinem Programm wird eine etwas längere while-Schleife
    ausgeführt. Das führt dann zu 100% Last auf einem CPU-Kern.

    Wie kann ich jetzt möglichst portabel und elegant bei jedem
    Schleifendurchlauf warten (vll. auf nen interrupt oder sowas?)
    um die CPU last zu verringern?

    Unter Windows konnte man zB. relativ einfach mit
    Sleep() warten, das kommt hier leider nicht
    in frage.


  • Mod

    Warum willst du das tun? Willst du nicht, dass die Schleife möglichst schnell abgearbeitet wird? Dazu ist der Prozessor doch schließlich da. Ein bisschen Last schadet ihm nicht.



  • SeppJ schrieb:

    Warum willst du das tun? Willst du nicht, dass die Schleife möglichst schnell abgearbeitet wird? Dazu ist der Prozessor doch schließlich da. Ein bisschen Last schadet ihm nicht.

    Naja, normalerweise sollte das kein Problem sein, in meinem Fall
    allerdings ist die Geschwindigkeit durch andere Faktoren eh begrenzt,
    und das Programm soll auf einem Server möglichst still im Hintergrund
    laufen 😉


  • Mod

    neuling3k schrieb:

    SeppJ schrieb:

    Warum willst du das tun? Willst du nicht, dass die Schleife möglichst schnell abgearbeitet wird? Dazu ist der Prozessor doch schließlich da. Ein bisschen Last schadet ihm nicht.

    Naja, normalerweise sollte das kein Problem sein, in meinem Fall
    allerdings ist die Geschwindigkeit durch andere Faktoren eh begrenzt,
    und das Programm soll auf einem Server möglichst still im Hintergrund
    laufen 😉

    Das sollte aber eigentlich die Lastverteilung auf dem Server regeln. Das direkt im Programm zu implementieren wäre sehr, sehr ungewöhnlich. Falls du es aber trotzdem machen willst: Nein, dafür gibt es keine plattformunabhängige Methode.



  • ein usleep eventuell ? Ist der kein Standard in der libc


  • Mod

    pferdefreund schrieb:

    ein usleep eventuell ? Ist der kein Standard in der libc

    Nein, das gibt's nur auf POSIX kompatiblen Systemen wie z.B. Linux.


Anmelden zum Antworten