Ich habe eine Anwendung, die Code in sehr genauen Intervallen ausgeführt werden muss. Zu diesem Zweck brauche ich auch Windows 'Scheduler Auflösung auf 1ms über timeBeginPeriod
erhöht.Stoppt oder stoppt der Stop-The-World-Effekt von .NET Garbage Collector die Ausführung von nicht verwalteten Threads und Timer-Callbacks?
Um dies zu tun, habe ich eine native C++ - DLL, die alle zeitkritischen Dinge über Callbacks behandelt, die von einem TimerQueueTimer
in einem Intervall von 1ms ausgelöst werden (alle nativen Code).
Die Anwendung selbst ist eine .NET-Anwendung (C#, also reine CLR). Die native DLL verwendet Pufferung, so dass der C# -Code selbst nicht zeitkritisch sein muss, solange er alle 50 ms Ausführungszeit benötigt.
Wenn der Garbage Collector anschlägt, würde dies auch die Ausführung von Timer Callbacks in meinem Programm anhalten oder verzögern? (Mit anderen Worten: Breitet sich die Nicht-Deterministik eines .NET-Programms sogar auf native Codefragmente aus, die von ihm verwendet werden?) Ich habe auf diese präzise Frage keine Antwort gefunden. Ein Link zur MSDN-Dokumentation wäre sehr beruhigend.
ich .NET 4.0
Welche Version von .NET verwenden Sie? GC wurde in Version 4.5 geändert und es kann Ihnen helfen (MSDN: Grundlagen der Garbage Collection) (http://msdn.microsoft.com/en-us/library/ee787088 (v = vs.110) .aspx)). –
@dialer Was ist deine Erfahrung gewesen? Gab es bei der Ausführung von nicht verwalteten Threads in einer verwalteten Umgebung Leistungsprobleme oder nicht? Danke :) – BatteryBackupUnit