C# kleinste Ressourcen/Prozessor intensiv, um den Thread über kurze Zeiträume genau zu blockierenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# kleinste Ressourcen/Prozessor intensiv, um den Thread über kurze Zeiträume genau zu blockieren

Post by Anonymous »

Ich entwickle eine Konsolenanwendung, die regelmäßig zwei Threads ausführt: eine für eine Tickevent -Funktion und eine für die Aktualisierung der Konsolenanzeige. Derzeit blockiert jeder Thread einfach eine Bedingung, bis es Zeit für den nächsten Zyklus ist.

Code: Select all

static void HandleTickBehaviour()
{
Stopwatch tickDuration = new(); //time tick starts

while (true)
{
tickDuration.Restart();

Tick.Invoke(ElapsedTicks); // invoke all tick event watchers
Profiler.CalcTime.Add(tickDuration.ElapsedMilliseconds); // how long it took for all tick event to run

long targetThreadDelay = (int)(Math.Max(25 - Math.Max(_deltaTime - 25, 0), 0) / 1000d * Stopwatch.Frequency); // how long to wait for next tick (25ms - delta time)
while (true) if (tickDuration.ElapsedTicks >= targetThreadDelay) break;

_deltaTime = tickDuration.ElapsedMilliseconds;
Profiler.TickTime.Add(_deltaTime);
ElapsedTicks++;
}
}

internal static void HandleConsoleRender()
{
Stopwatch frameDuration = new();

while (true)
{
frameDuration.Restart();
RenderConsole();

while (true) if (frameDuration.ElapsedTicks >= displayWindowsTickInterval) break;

Profiler.RenderTime.Add(frameDuration.ElapsedTicks);
}
}
Thread -Blockierungsergebnisse :

Die anderen Annäherungen, die ich implementieren kann, werden das Thread verwendet. Einfach zu viel und sogar zu versuchen, dafür zu berücksichtigen, dass Aktualisierungen unvorhersehbar auftreten.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post