繁体   English   中英

是否可以在没有QtConcurrent的情况下使用QFuture?

[英]Is it possible to use QFuture without QtConcurrent?

我有一个带有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的方法可以做到吗?

我只找到了可以与QtConcurrent一起使用的QFuture类。 我找不到一个说明如何与QThread一起使用的示例。 使用Qt正确执行此操作有哪些选择?

是的,您可以不使用QConcurrent使用QFuture。 但是未记录该API。 您可以在以下位置查看我的包装库AsyncFuture:

https://github.com/benlau/asyncfuture

有一个清晰的示例将QFuture用作promise对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM