我想做的应该很容易,但我不明白……
我想要做的就是在后台启动一个类的成员函数
在某个特定的时间点.该功能的结果也应该是“外部”可用的.所以我想在构造函数中准备任务(设置future变量,…)并在稍后的某个时间启动它.
我试图结合std ::(packaged_task | async | future),但我没有让它工作.
这段代码不会编译,但我认为它显示了我想要做的事情:
class foo {
private:
// This function shall run in background as a thread
// when it gets triggered to start at some certain point
bool do_something() { return true; }
std::packaged_task task;
std::future result;
public:
foo() :
task(do_something), // yes, that's wrong, but how to do it right?
result(task.get_future())
{
// do some initialization stuff
.....
}
~foo() {}
void start() {
// Start Task as asynchron thread
std::async as(std::launch::async, task); // Also doesn't work...
}
// This function should return the result of do_something
bool get_result() { return result.get(); }
};
提前致谢!