Wenn ich ein std :: async-Objekt in einer Klasse erstelle, wie lange läuft der entsprechende Thread? Bis der Destruktor der enthaltenden Klasse (Bar) aufgerufen wird?Wie lange läuft std :: async?
class Bar {
public:
Bar() {
handle = std::async(
std::launch::async,
&Bar:foo, this);
}
...
void Foo() {
while (true) {//do stuff//}
}
private:
std::future<void> handle;
};
EDIT:
Wie lange dauert der Fadenlauf in dem folgenden Beispiel:
class Bar {
public:
Bar() : thread(&Bar:foo, this) {
}
...
void Foo() {
while (true) {//do stuff//}
}
private:
std::thread thread;
};
Danke, sehr aufschlussreich. Verstehe ich Sie richtig, dass für periodische Aufgaben (wie Aufräumen) als Funktion Foo in meinem Beispiel std :: threads anstelle von std :: async verwendet werden sollte? – user695652
Beachten Sie, dass ein Compiler gemäß dem C++ - Standard einen Thread beenden oder optimieren kann, der unbegrenzt ausgeführt wird. – rubenvb