Ho un'applicazione che deve avere il codice eseguito a intervalli molto precisi. A tale scopo, ho anche bisogno della risoluzione dello scheduler di Windows aumentata a 1 ms tramite timeBeginPeriod
.L'effetto stop-the-world di .NET Garbage Collector blocca o ritarda l'esecuzione di thread non gestiti e callback del timer?
Per fare ciò, ho una dll C++ nativa che gestisce tutte le cose di importanza temporale tramite richiamate che vengono sollevate da un TimerQueueTimer
a un intervallo di 1 ms (tutto il codice nativo).
L'applicazione stessa è un'applicazione .NET (C#, quindi puro CLR). La dll nativa usa il buffering, quindi il codice C# stesso non ha bisogno di essere critico per il tempo, purché ottenga un po 'di tempo di esecuzione ogni 50 ms circa.
Quando il garbage collector colpisce, si fermerebbe o ritarderebbe anche l'esecuzione di qualsiasi richiamo del timer nel mio programma? (In altre parole: la non determinatezza di un programma .NET si estende persino ai frammenti di codice nativo da essa utilizzati?) Non ho trovato una risposta a questa domanda precisa. Un collegamento alla documentazione MSDN sarebbe molto rassicurante.
sto usando .NET 4.0
Quale versione di .NET stai usando? GC è stato modificato in 4.5 e potrebbe essere d'aiuto ([MSDN: Fundamentals of Garbage Collection] (http://msdn.microsoft.com/en-us/library/ee787088 (v = vs.110) .aspx)). –
@dialer, qual è stata la tua esperienza? Sono stati quindi riscontrati problemi di prestazioni durante l'esecuzione di thread non gestiti in un ambiente gestito o meno? Grazie :) – BatteryBackupUnit