Причина, по которой кому-то будет интересно
//...
new std::thread (func,arg1,arg2);
}
- это то, что деструктор std::thread
(в отличие от boost::thread
) убивает поток. func заканчивает некоторое время.
Мой вопрос, это безопасно в случаях:
Случай 1: предположим, что функция принимает значение arg1, arg2.
Случай 2: предположим, что функция принимает arg1, arg2 по ссылке - это звучит плохо, если вы спросите меня, потому что я предполагаю, что в конце области, где создан поток, arg1 и arg2 будут очищены их деструкторами.
Кстати, деструктор std :: thread (то есть AFAIK, который вызывается после завершения func) достаточно умен, чтобы очистить все ресурсы, используемые потоком? Я имею в виду, если я создаю 1M потоков (ofc не одновременно) с новыми, и все они заканчиваются, я что-нибудь утекла навсегда?