我需要帮助来实现C++中的异步函数调用。我是C++多线程新手。异步函数调用,用一种方法来检查进度
应该有两个功能:一个是在另一个线程中开始工作,另一个是检查进度和工作是否完成。
我试着用一些代码从这个网站上的不同答案,但它不工作。
int __stdcall Test::asyncStartWork()
{
asyncReady = false;
std::thread workThread = std::thread(&Test::doWork, this);
return 0;
}
int __stdcall Test::asyncGetProgress()
{
if (asyncReady = true)
{
workThread.join();
return 100;
}
else
{
return asyncProgress;
}
}
int __stdcall Test::doWork()
{
//do work and write progress to asyncProgress
//at the end
asyncReady = true
}
当调用asyncStartWork我得到以下错误:
[MCVE]是必要的。并描述你的实际问题。 – Yakk
你的线程对象是本地的,并且会在'asyncStartWork'结尾处被破坏。快速解决将是'分离'。 – knivil