我很难理解如何使用异步函数。
我不想使用boost库,只是想异步运行一个函数,因此我请求您的帮助:
下面是我的一段代码:
void KWxAPI::update(bool const no_interact)
{
async(launch::async, &KWxAPI::syncUpdate, no_interact);
}
bool KWxAPI::syncUpdate(bool const nointeract)
{
//blablabla
}
下面是构建gimme:见上巴斯托的错误
我真的希望你能帮我,因为我来自Java,而C++要难得多
编辑:我在使用MSVC。
发布于 2014-04-03 09:48:55
您的代码没有编译,因为您试图调用指向成员函数的指针,而不传递对象来调用它。
KWxAPI::syncUpdate
需要一个KWxAPI
对象来使用,因为它是this
指针,但是您没有传递一个。任何时候,当您试图调用指针到成员函数时,都需要传递它应该用作第一个参数的this
指针。
std::async(std::launch::async, &KWxAPI::syncUpdate, this, no_interact);
除此之外,您应该知道KWxAPI::syncUpdate
将在另一个线程中执行,但是您的std::async
语句将被阻塞,直到该线程完成该函数的执行。
这是因为std::async
返回一个std::future
对象,该对象在std::async
语句末尾被销毁,因为您没有将它存储在任何地方。在它的析构函数中,它阻塞直到执行完成。
https://stackoverflow.com/questions/22843807
复制