代码之家  ›  专栏  ›  技术社区  ›  Kackao

获取std::future的运行时间::wait\u for

  •  4
  • Kackao  · 技术社区  · 8 年前

    有没有一种简单的方法可以获得 std::future<T>::wait_for 是否未发生超时?我想实现这样的目标:

    std::future<void> futureRet = std::async(std::launch::async, &Someone::doSomething, this);
    futureRet.wait_for(std::chrono::seconds(30));
    
    cout << "doSomething returned after <" << futureRet.getElapsedTime() << "> seconds.";
    

    是否有一种“getElapsedTime()”函数,或者我必须自己计算经过的时间?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Barry    8 年前

    有一种简单的方法 <chrono> :

    auto start = std::chrono::steady_clock::now();
    std::future<void> futureRet = std::async(std::launch::async, &Someone::doSomething, this);
    futureRet.wait_for(std::chrono::seconds(30));
    auto end = std::chrono::steady_clock::now();
    std::chrono::duration<double> elapsed_seconds = end - start;    
    cout << "doSomething returned after <" << elapsed_seconds.count() << "> seconds.";