многопоточность — C ++ std :: thread должен создаваться в куче или в стеке

Допустим, у меня есть поток, который создается и отсоединяется в стеке так:

void foo()
{
while(true){};
}

void runThread()
{
std::thread t(foo);
t.detach();
}

int main()
{
runThread();
}

Программа, конечно, ничего не значит, но что происходит после того, как мы отсоединились и вышли runThred ? он был размещен в стеке, так что в основном t будет уничтожен после выхода runThred, но сам поток будет продолжать работать независимо от основного потока, потому что он отсоединен.

Является ли лучшая практика в таком примере, чтобы создать его в куче и сохранить указатель на него, делая что-либо (dcor) после этого?

Или это ничего не значит, если t переменная уничтожена, и мы должны просто «игнорировать» это?

1

Решение

std::thread объект представляет собой дескриптор потока, через который он может работать. Но как только вы позвоните detach нет никакой связи между объектом и фактическим потоком выполнения.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector