Есть ли какие-либо последствия, чтобы никогда не удалять критические разделы? - PullRequest
2 голосов
/ 11 августа 2010

Я дорабатываю большой объем нативного кода, который использует несколько статических критических разделов и никогда не вызывает DeleteCriticalSection , оставляя их для обработки выхода для очистки.

Нет никаких утечек и никаких опасений по поводу того, что общее количество CS становится слишком высоким, мне просто интересно, есть ли какие-либо долгосрочные последствия для Windows, если их не очистить. У нас есть наборы регрессионных тестов, которые запускают программу тысячи раз в день, хотя конечные пользователи вряд ли будут делать что-то подобное.

Из-за диапазона развернутых машин мы должны учитывать и Windows XP, и этот собственный код запускается из управляемого приложения.

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

Краткий ответ, вероятно, нет. Длинный ответ таков: это ленивая практика программирования, которую следует исправить.

Для правильного использования DeleteCriticalSection необходимо корректно завершить работу, чтобы ни один другой поток не владел или не пытался владеть разделом до / после его удаления. И программистам лень определять и реализовывать, как выключение будет работать для их программы.

Есть много вещей, которые вы можете сделать без немедленных измеримых последствий, но это не делает это правильным. Также подобное отношение к другим дескрипторам / объектам в той же кодовой базе будет иметь кумулятивный эффект и может привести к «последствиям».

2 голосов
/ 11 августа 2010

Критическая секция - это просто блок памяти, если не обнаружен конфликт, когда объект события создается для синхронизации.Процесс выхода очистит любые затяжные события.Если бы вы создавали их динамически во время выполнения и не освобождали их, это было бы плохо.Если те, которые не очищаются, являются фиксированной суммой для каждого процесса, я бы не беспокоился об этом.

В принципе, каждый ресурс процесса очищается при выходе из процесса.Ресурсы ядра, такие как объекты событий, определенно следуют этому принципу.

...