Здравствуйте, Doom100500, Вы писали:
D>Был бы deadlock, было бы понятно, но поток (std::thread) завершается молча, и создаётся впечатление, что всё работает правильно. Только после добавления диагностических логов возник вопрос.
Ну я подебажил ваш код. Так и есть, после выхода из main процесса начинает разрушаться CRT и там уже зовется DllMain из него. Т.е. ресурсы уже начинают отлетать потихоньку, а вы ими продолжаете пользоваться в DLL, тем же std::out и т.д. Все что нужно сделать это вызвать release для w перед выходом из main и все начинает работать как вы хотите.