Mam aplikację, która musi mieć kod wykonany w bardzo precyzyjnych odstępach czasu. W tym celu potrzebuję również rozdzielczości harmonogramu Windows zwiększonej do 1 ms przez timeBeginPeriod
.Czy efekt zatrzymania świat-nośnik .NET zatrzymuje się lub opóźnia wykonanie niezarządzanych wątków i wywołań zwrotnych licznika czasu?
Aby to zrobić, mam natywną bibliotekę C++, która obsługuje wszystkie krytyczne rzeczy za pośrednictwem wywołań zwrotnych, które są wywoływane z TimerQueueTimer
w odstępie 1 ms (cały kod natywny).
Sama aplikacja jest aplikacją .NET (C#, więc czysty CLR). Natywna biblioteka dll używa buforowania, więc kod C# sam w sobie nie musi być krytyczny pod względem czasu, o ile ma co najmniej 50 ms czasu wykonania.
Kiedy pojawi się narzędzie do zbierania śmieci, czy to również zatrzyma lub opóźni wykonanie wywołań zwrotnych licznika w moim programie? (Innymi słowy: czy niedeterministyczność programu .NET przenosi się nawet na natywne fragmenty kodu używane przez nią?) Nie znalazłem odpowiedzi na to precyzyjne pytanie. Link do dokumentacji MSDN byłby najbardziej uspokajający.
Używam .NET 4.0
Jaka wersja .NET używasz? GC zmieniło się w 4.5 i może ci pomóc ([MSDN: Fundamentals of Garbage Collection] (http://msdn.microsoft.com/en-us/library/ee787088 (v = vs.110) .aspx)). –
@dialer jakie było twoje doświadczenie? Czy wystąpiły problemy z wydajnością podczas uruchamiania niezarządzanych wątków w zarządzanym środowisku, czy nie? Dzięki :) – BatteryBackupUnit