Frage

Ich entwickle eine C # Programm, und ich habe eine Funktion, die zu viel CPU verbraucht. Ich möchte eine Art und Weise wissen, dass dies durch Code zu steuern (nicht mit einer externen Anwendung) und den Prozentsatz der CPU-Auslastung zu beschränken. Zum Beispiel, wenn es verbraucht 90% der CPU-Auslastung, um meine app nur ein 20% verbrauchen zu machen, auch wenn es langsamer wird. Es muss automatisch und aus der App heraus erfolgen. Wenn Sie eine Klasse zur Verfügung stellen, wäre es fantastisch sein.

War es hilfreich?

Lösung

Ich weiß nicht, ob Sie das tun können, aber Sie können die Threadpriorität des ausgeführten Threads ändern über die Priorität Eigenschaft. Sie würden eingestellt, dass durch:

Thread.CurrentThread.Priority = ThreadPriority.Lowest;

Auch ich glaube nicht, dass Sie es wirklich Kappe wollen. Wenn die Maschine nicht anderweitig genutzt wird, mögen Sie es auf mit der Aufgabe beschäftigt, um zu bekommen, nicht wahr? Thread hilft kommunizieren diese an den Scheduler.

Andere Tipps

Sie können eine Schleife verlangsamen durch Thread.Sleep (Millisekunden) innerhalb der Schleife aufgerufen wird. Das reicht die CPU zurück an den Scheduler.

Aber ‚zu viel CPU raubend‘ macht mich denken, Sie könnten mehr grundlegende Probleme haben. Ist dieser Thread Polling und warten auf etwas anderes? Wenn ja, sollten Sie die Verwendung von Veranstaltungen betrachten oder einen anderen Kernel-basierten Signalmechanismus.

Ich denke, Sie brauchen eine Art von OS API abfragen, um herauszufinden, wie viel von der CPU verbrauchen Sie und Entscheidungen Drosselung (wie Thread.Sleep) von dem auf.

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