【发布时间】:2016-03-21 14:09:57
【问题描述】:
我需要帮助才能在 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 时出现以下错误:
【问题讨论】:
-
minimal reproducible example 是必需的。并描述您的实际问题。
-
你的线程对象是本地的,会在
asyncStartWork结束时被销毁。快速解决方法是detach。
标签: c++ multithreading asynchronous