So habe ich ein Programm, das als eine Art "Shell" für andere Programme dient. Im Kern werden eine Klasse, ein Methodenname und einige Argumente übergeben, und die Ausführung der Funktion wird so gehandhabt, dass andere Programmierer ihre Prozesse grundsätzlich so planen können, dass sie auf diesem Shell-Service ausgeführt werden. Bis auf ein Problem funktioniert alles einwandfrei. Häufig sind diese Prozesse, die zur Ausführung geplant sind, sehr CPU-lastig. Manchmal beginnen die genannten Prozesse so viel von der CPU zu verwenden, dass die Threads, die ich für das Überprüfen von Zeitplänen und das Abfeuern anderer Jobs zuständig bin, keine Chance bekommen, für eine gewisse Zeit zu laufen, was zu Zeitplanungsproblemen führt und a Mangel an ausreichender Reaktionsfähigkeit. Leider kann ich Thread.Sleep() -Aufrufe in den tatsächlichen laufenden Code nicht einfügen, da ich es nicht wirklich "besitze".Zwingen Sie einen anderen Thread zum Schlafen
Meine Frage ist also: Ist es möglich, einen willkürlichen Thread (den ich gestartet habe) zu zwingen, immer wieder einzuschlafen (yield), ohne den eigentlichen Code zu ändern, der in diesem Thread läuft? Abgesehen davon, gibt es eine Möglichkeit, Thread.Sleep() in Code zu "injizieren", den ich zur Laufzeit dynamisch ausführen möchte?
Keine Antwort, aber ... wenn Sie die beteiligten Schnittstellen steuern, könnten Sie verlangen, dass ein Programm Aufruf in einem bereitgestellten Delegaten, wo Sie Co-operative Multitasking Ad-hoc (Schlaf, wenn andere Prozesse verhungern). Es hängt genau davon ab, wie viel Sie den Code nicht besitzen. –