我想做的事情应该很容易,但我不明白......
我想做的就是在某个特定时间点在后台启动一个类的成员函数。该函数的结果也应该是“外部”可用的。所以我想在构造函数中准备任务(设置未来变量,...)并在稍后启动它。
我试图结合 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<bool()> task;
std::future<bool> 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(); }
};
提前致谢!