In diesen Tagen lese ich die pdf Designing MT programs. Es wird erläutert, dass der Benutzer detach()
für ein Objekt der Klasse std::thread
in C++ 0x explizit aufrufen muss, bevor das Objekt den Gültigkeitsbereich verlässt. Wenn Sie es nicht anrufen, wird std::terminate()
aufgerufen und die Anwendung wird absterben.Thread Destruktoren in C++ 0x vs Boost
Normalerweise verwende ich boost::thread
zum Threading in C++. Korrigieren Sie mich, wenn ich falsch liege, aber ein Objekt löst sich automatisch, wenn es den Rahmen verlässt.
scheint mir, dass der Boost-Ansatz ein RAII-Prinzip folgen und die Std nicht.
Wissen Sie, ob es einen bestimmten Grund dafür gibt?
Warum nicht ein join_on_destruction- oder detach_on_destruction-Flag im Konstruktor oder eine andere Möglichkeit, das Verhalten explizit anzugeben. – Puppy
Es gibt ein interessantes Papier [hier] (http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2008/n2802.html) – icecrime
Hallo IceCrime. Danke für das Papier. Im Grunde ist das Töten der Anwendung der offensichtlichste Weg, um eine Flagge über Fehler in Threads zu heben. Interessant und wirklich "defensiv" würde ich sagen. :) –