Могу ли я предотвратить сборщик мусора от остановки некоторых из моих потоков?

StackOverflow https://stackoverflow.com/questions/282327

Вопрос

Возможно ли в приложении Compact Framework предотвратить сборщик мусора от безоговорочной остановки хотя бы одного из потоков или заблокировать сбор GC хотя бы в некоторых частях кода?

Я думаю, что это связано с установлением приоритетов в реальном времени, но я нашел много советов против этого.

Это было полезно?

Решение

GC должен заморозить все потоки, чтобы проверить все объекты. Как это может сделать свою работу, если какой-то поток работает и модифицирует / создает объект?

Лучше не делай этого.

Что вы можете сделать, это вызвать GC.Collect () и GC.WaitForPendingFinalizers (), прежде чем войти в состояние, в котором вы не хотите, чтобы вас прерывали. Это даст вам некоторое время.

Другие советы

Неуправляемому коду запрещен доступ к неподкрепленным управляемым объектам, но он будет работать без блокировки во время сбора мусора. Если у вас есть определенные подпрограммы, которые должны работать во время сбора мусора, и им не требуется доступ к неподкрепленным управляемым объектам, вы можете написать эти подпрограммы в неуправляемом коде, и сборщик мусора не повлияет на них.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top