При понимании Потоков и их время жизни (Сброс, Расположите, Близко),

Я не полагаю, что будет коллизия. Используя статический на уровне файла (вне функций) отмечает переменную как локальную для текущей единицы компиляции (файл). Это никогда не видимо вне текущего файла, поэтому никогда не должен иметь имя.

Используя статический в функции отличается - переменная только видима к функции, это - просто свое значение, сохраняется через вызовы к той функции.

В действительности, статичный делает две разных вещи в зависимости от того, где это. В oth случаях однако, это ограничивает видимость переменной для предотвращения столкновений пространства имен,

Однако я полагаю, что это было бы сохранено в ДАННЫХ, которые имеют тенденцию инициализировать переменную. BSS первоначально выдержан за byte-set-< что-то>, который содержал переменные, которые не были инициализированы.

24
задан Community 23 May 2017 в 12:09
поделиться

1 ответ

Удаление потока закрывает его (и, вероятно, больше ничего не делает). поток очищает его и освобождает все ресурсы, связанные с потоком, например дескриптор файла. При очистке потока любые буферизованные данные, которые еще не были записаны, сразу же записываются; некоторые потоки используют внутреннюю буферизацию, чтобы избежать тонны небольших обновлений относительно дорогих ресурсов, таких как файл на диске или сетевой канал.

Вам необходимо вызвать либо Close , либо Dispose на большинство потоков, или ваш код неверен, потому что основной ресурс выиграл они должны быть освобождены для использования кем-то другим до тех пор, пока не появится сборщик мусора (кто знает, сколько времени это займет.) Dispose является само собой разумеющимся; ожидается, что вы избавитесь от всех одноразовых вещей на C #. Вероятно, вам не нужно явно вызывать Flush в большинстве сценариев.

В C # идиоматично вызывать Dispose посредством блока using , который является синтаксическим сахаром для блока try-finally, который удаляется в finally, например:

using (FileStream stream = new FileStream(path))
{
    // ...
}

функционально идентичен

FileStream stream;

try
{
    stream = new FileStream(path);
    // ...
}
finally
{
    if (stream != null)
        stream.Dispose();
}
33
ответ дан 28 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

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