首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查std::async任务是否完成?

如何检查std::async任务是否完成?
EN

Stack Overflow用户
提问于 2013-01-12 05:42:21
回答 1查看 8.8K关注 0票数 24

在我的图形应用程序中,我想在另一个线程中生成批处理网格。因此,我使用std::async异步调用成员函数。

代码语言:javascript
复制
task = async(launch::async, &Class::Meshing, this, Data(...));

在我的update循环中,我尝试检查线程是否准备就绪。如果是,我将把网格发送到视频卡,并开始下一个线程。如果没有,我将跳过这些操作。

代码语言:javascript
复制
#include <future>
using namespace std;

class Class
{
public:
    void Update()
    {
        if(task.finished()) // this method does not exist
        {
            Data data = task.get();
            // ...
            task = async(launch::async, &Class::Meshing, this, Data(/* ... */));
        }
    }

private:
    struct Data
    {
        // ...
    };
    future<Data> task;
    Data Meshing(Data data)
    {
        // ...
    }
};

我如何检查异步线程是否在没有插入更新函数的情况下完成?

EN

回答 1

Stack Overflow用户

发布于 2018-01-29 20:58:55

有一个用于std::future的is_ready成员函数in the works。同时,VC实现有一个_Is_ready()成员。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14287127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档