Advanced Java Services | std::thread C++ 11 |
Mit detach erzeugt man Threads, die abgekoppelt von main laufen. Sie werden vom Betriebssystem beendet, wenn main zu Ende ist, auch wenn sie selbst noch nicht zu Ende sind.
Im folgenden werden zwei Dämonen erzeugt, von denen einer nach dem Ende von main unterbrochen und beendet wird.
Die folgenden zwei Funktionen laufen in zwei eigenen Threads.
/* das makro __func__ gibt den namen der funktion aus */ void foo() { for(char ch='A'; ch<'A'+7; ++ch) std::cout << __func__ << "-id" << std::this_thread::get_id() << "-" << ch << std::endl; } /* das makro __func__ gibt den namen der funktion aus */ void bar(int howOften) { for(int i=0; i < howOften; ++i) std::cout << __func__ << "-id" << std::this_thread::get_id() << "-" << i << std::endl; }
Die von main gerufene Methode
void detach_creates_daemons() { std::thread thread1(foo); std::thread thread2(bar, 12); thread1.detach(); // daemon erzeugen thread2.detach(); // daemon erzeugen for(int i=0; i<7; i++) std::cout << "main-id" << std::this_thread::get_id() << "-" << i << std::endl; cout << "*end-main*" << endl; }
Zwei Ausgaben
Zwei Ausgaben