Если я создам объект std :: async в классе, как долго выполняется соответствующий поток? До тех пор, пока не будет вызван дескриптор содержащего класса (Bar)?Как долго работает 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:
Как долго пробег потока в следующем примере:
class Bar {
public:
Bar() : thread(&Bar:foo, this) {
}
...
void Foo() {
while (true) {//do stuff//}
}
private:
std::thread thread;
};
Спасибо, очень проницательный. Правильно ли я понимаю вас, что для периодических задач (например, очистка) в качестве функции Foo в моем примере следует использовать std :: threads вместо std :: async? – user695652
Обратите внимание, что в соответствии со стандартом C++ компилятору разрешено завершать или оптимизировать поток, который будет работать бесконечно. – rubenvb