Advanced   Java   Services std::thread  C++ 11 Back Next Up Home


dämomen mit detach

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

C++11-threads-daemon-1.jpg

C++11-threads-daemon-2.jpg







xxx







xx






Zwei Ausgaben

Valid XHTML 1.0 Strict top Back Next Up Home