Ich weiß, dass viele Leute diese Frage gestellt haben, aber ich bin nicht "viele Leute" und ich brauche eine andere und eine bessere Erklärung zu verstehen.Was "detach()" auf Thread tut? CPP
Die Member-Funktion "detach()" was genau tut es? Ich habe versucht, das nächste Codebeispiel ausgeführt wird:
#include <iostream>
#include <chrono>
#include <thread>
void independentThread()
{
std::cout << "Starting concurrent thread.\n";
std::this_thread::sleep_for(std::chrono::seconds(200));
std::cout << "Exiting concurrent thread.\n";
}
void threadCaller()
{
std::cout << "Starting thread caller.\n";
std::thread t(independentThread);
t.detach();
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "Exiting thread caller.\n";
}
int main()
{
threadCaller();
std::this_thread::sleep_for(std::chrono::seconds(5));
}
Und nach 5 Sekunden geschlossen das ganze Programm. Ich dachte, das Programm wird weitere 195 Sekunden nach dem "Haupt" geöffnet werden, weil die ganze Idee von "trennen" ist unabhängig mit dem Haupt, so in unabhängiger Weise sollte es noch laufen, bis alle abgelösten Theraden beendet sind ... Ich habe die Dokumentation gelesen und bin hierher gekommen. Eine bessere Erklärung - bitte! :)
machen Sie Ihr Leben einfacher mit ['std :: async'] (http://en.cppreference.com/w/cpp/thread/async). –