Những gì tôi muốn làm nên khá dễ dàng, nhưng tôi không ...Sử dụng chức năng thành viên trong std :: packaged_task
Tất cả những gì tôi muốn làm là bắt đầu một hàm thành viên của một lớp trong nền tại một số thời điểm nhất định. Kết quả của hàm đó cũng phải là "bên ngoài" có sẵn. Vì vậy, tôi muốn chuẩn bị nhiệm vụ trong hàm tạo (thiết lập biến tương lai, ...) và bắt đầu nó ở một số điểm sau này.
Tôi đã cố gắng kết hợp std: :(packaged_task | async | future) nhưng tôi không làm cho nó hoạt động.
đoạn này sẽ không biên dịch, nhưng tôi nghĩ rằng nó cho thấy những gì tôi muốn làm:
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(); }
};
Cảm ơn trước!
'std :: async' là hàm, không phải loại –