C++ 在类内调用异步函数

C++ 在类内调用异步函数,c++,asynchronous,C++,Asynchronous,我有一个有几个方法的类。其中一个需要计算和渲染大量数据(坐标)。为了使程序运行更快、更流畅,我考虑使用异步方法。我创建了一个私有函数来进行计算和渲染 我的班级: #包括 类MyClass{ 公众: //这里有一个包含所有类变量声明的构造函数,因此我将在这里省略 作废提款(){ for(int i(0);i

我有一个有几个方法的类。其中一个需要计算和渲染大量数据(坐标)。为了使程序运行更快、更流畅,我考虑使用异步方法。我创建了一个私有函数来进行计算和渲染

我的班级:

#包括
类MyClass{
公众:
//这里有一个包含所有类变量声明的构造函数,因此我将在这里省略
作废提款(){
for(int i(0);i

我的编译器(MinGW)说
错误:必须调用对非静态成员函数的引用
。我还尝试将函数作为指针传递给
async
,但没有成功。

std::async
需要调用函数,方法不是函数,因为必须对对象调用它。
std::async
如何知道使用哪个对象调用
compute\u和\u render

尝试使用lambda函数捕获对象

 std::async([this](int ii, int jj) { compute_and_render(ii, jj); }, i, j);

请注意,我没有使用std::async的经验,所以我不知道这样做是否明智,但是我确实知道如何编写lambda函数。

compute\u and\u render
必须是
静态成员函数或非成员函数。还要注意的是,通过丢弃
std::async
返回的
std::future
,可以有效地序列化对
compute\u and\u render
的调用,因为
std::future
析构函数将等待调用完成。