GC.KeepAlive по сравнению с использованием

regex = r"\s\*{2,}[\s\n]"

Это соответствует 2 или более * символам, окруженным пробелами (или оканчивается новой строкой)

Называть это может быть так?

regex = r"\s\*{2,}[\s\n]"


def replacer(match):
    return 'x' * len(match.group())

re.sub(regex, replacer, your_string_here)
14
задан Jim Mischel 11 March 2009 в 18:16
поделиться

3 ответа

Обертывание взаимного исключения в a using оператор будет действительно препятствовать тому, чтобы он был собран "мусор", но также избавится от него (это звонит Dispose, нет Close) в конце (тогда как GC.KeepAlive не будет, очевидно).

Если конец метода действительно будет концом процесса, я не полагаю, что это, вероятно, будет иметь любое практическое значение, которое Вы используете - я предпочитаю using оператор на общем принципе избавления от чего-либо, что реализует IDisposable.

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

Если финализатор не заботится о нем, я не знаю, заметит ли сам Windows, что процесс не может возможно больше владеть взаимным исключением, учитывая, что это (процесс) больше не существует. Я подозреваю, что это будет, но необходимо было бы проверить, подробно изложил документацию Win32 для знания наверняка.

18
ответ дан 1 December 2019 в 12:53
поделиться

Используя using кажется, лучшее соответствие в этом случае, чем использование GC.KeepAlive. Вы не только хотите сохранить Mutex живой, пока приложение работает, Вы также хотите, чтобы оно ушло, как только Вы выходите из основного цикла.

Если Вы просто уезжаете Mutex при зависании, не располагая его, там может пройти некоторое время, прежде чем это будет завершено, в зависимости от того, сколько там должна сделать работа очистки, когда приложение закрывается.

5
ответ дан 1 December 2019 в 12:53
поделиться

Я думаю, что KeepAlive используется с названным Mutex, чтобы убедиться, что он НЕ является мусором, собираемым рано. Шаблон C # using / Dispose не защищен от этого. Когда ссылка на объект больше не используется в области видимости, среда выполнения может собирать ее до конца области. Это оптимизация.

-2
ответ дан 1 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: