QThread
ネットワーク クライアントを含む を含むプログラムがあります。クライアントは、オブジェクトを受け取り、処理し、サーバーにアップロードし、応答を取得して、メイン スレッドに報告することになっています。でこれを行いstd::promise
、その を使用しましたfuture
。std::promise
フューチャーを取った後に放出されるオブジェクトのメンバーを作りました。
最小限のサンプル コードは次のとおりです。
私が放出しているオブジェクト:
struct FileToUpload
{
std::string fileData;
std::string filename;
std::promise<int> promise;
}
私が放出に使用している部分:
FileToUpload theFile;
auto uploadFuture = theFile.promise.get_future();
emit uploadFile(&theFile); //passing pointer because promise is non-copyable
auto uploadSuccess = uploadFuture.get();
同じことを行うQtの方法はありますか?
QFuture
QtConcurrent で使用できるクラスしか見つかりませんでした。これを で使用する方法を説明する例が 1 つも見つかりませんでしたQThread
。Qtでこれを正しく行うためのオプションは何ですか?