Мне нужна помощь для реализации асинхронного вызова funtion в 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