C++で非同期関数呼び出しを実装するのに助けが必要です。私はC++でマルチスレッド化するのが初めてです。進行状況をチェックするメソッドを持つ非同期関数呼び出し
2つの機能があります.1つは別のスレッドで作業を開始し、もう1つは進行状況を確認し、作業が終了しています。
このサイトのさまざまな回答からいくつかのコードを試しましたが、うまくいきません。私は次のエラーを取得asyncStartWorkを呼び出すとき
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
}
:方法Test::asyncStartWork()
で
[MCVE]が必要です。あなたの実際の問題の説明。 – Yakk
あなたのスレッドオブジェクトはローカルで、 'asyncStartWork'の終わりに破壊されます。迅速な修正は 'detach'でしょう。 – knivil