У меня есть программа, которая использует несколько потоков. Как я понимаю, когда поток 0 завершает работу, вся программа выходит, независимо от любых других потоков, которые все еще могут выполняться.
Дело в том, что эти другие потоки могут открывать файлы. Естественно, это обернуто кодом обработки исключений, который в случае возникновения проблемы затрудняет закрытие файлов. Это также означает, что если я использую killThread
(который реализуется через throwTo
), файл также должен быть закрыт до выхода потока.
Мой вопрос в том, что если я просто разрешу thread 0 выйти, не пытаясь остановить другие потоки, будут ли все дескрипторы файлов закрыты красиво? Будут ли сброшены какие-либо буферизованные данные?
Короче, могу ли я просто выйти, или мне нужно сначала вручную убить потоки?