我有一个带有QThread
的程序,其中包含一个网络客户端。客户端应该获取一个对象,处理它,将其上传到服务器,获取响应,并向主线程报告。我用 std::promise
做到了这一点,并使用了它的 future
。我使 std::promise
成为在获取其 future 后发出的对象的成员。
最小示例代码如下:
我发出的对象:
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 方法可以做到同样的事情吗?
我只找到了一个可以与 QtConcurrent 一起使用的 QFuture
类。我找不到一个示例来解释如何将其与 QThread 一起使用。我可以选择哪些选项来正确使用 Qt 执行此操作?
最佳答案
是的,您可以在没有 QConcurrent 的情况下使用 QFuture。但 API 没有文档记录。您可以查看我的包装器库 AsyncFuture,网址为:
https://github.com/benlau/asyncfuture
它有一个清晰的示例,可以像 Promise 对象一样使用 QFuture。
关于c++ - 是否可以在没有 QtConcurrent 的情况下使用 QFuture?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43087176/