Неправильно ли инициализировать поток, используя временный объект потока, который может выйти из области видимости во время выполнения потока?
В программе, приведенной ниже, я попробовал 2 метода, приведенных ниже, и оба они работали без ошибок.
#include<thread>
using namespace std;
void consumer()
{
for(;;)
{}
}
int main()
{
thread t[5];
for(int i=0;i<5;i++)
{
/*
* Method 1
t[i]=std::thread(consumer);
*/
/*
* Method 2
thread local(consumer);
t[i]=std::move(local);
*/
t[i].detach();
}
while(1)
{}
return 0;
}