ガベージコレクターがスレッドの一部を停止しないようにできますか?
-
08-07-2019 - |
質問
Compact Frameworkアプリケーションでは、ガベージコレクターがスレッドの少なくとも1つを無条件に停止しないようにすること、またはコードの少なくとも一部でGC収集をブロックすることは可能ですか?
リアルタイムの優先度の設定に対処する必要があると思いますが、それに対して多くのアドバイスを見つけました。
解決
GCは、すべてのオブジェクトを検査するために、すべてのスレッドをフリーズする必要があります。スレッドが実行されていて、オブジェクトを変更/作成している場合、どのように機能しますか?
やらないほうがいい。
やることができるのは、中断したくない状態になる前にGC.Collect()とGC.WaitForPendingFinalizers()を呼び出すことです。これにより、時間がかかります。
他のヒント
アンマネージコードは、固定されていないマネージオブジェクトにアクセスできませんが、ガベージコレクション中にブロックされることなく実行されます。ガベージコレクション中に実行を継続する必要がある特定のルーチンがあり、固定されていないマネージオブジェクトへのアクセスを必要としない場合、それらのルーチンをアンマネージコードで記述してもGCは影響しません。
所属していません StackOverflow