在C ++ 11中保持分离线程是否有任何危害

时间:2017-06-10 05:57:32

标签: c++ multithreading c++11 asynchronous timer

通常在我的程序中,我需要在10毫秒内启动任务而不会阻塞当前线程。这样做的最佳工具和框架是什么?我做了一些关于提升异步的研究,但我不确定提升是否太慢。我正在使用C ++ 11线程。根据标准,当分离的线程完成执行时,OS将回收资源。我想出了以下代码: 是否有更好(更有效)的方法来做到这一点?我的伪代码有什么问题吗?

to

1 个答案:

答案 0 :(得分:2)

std::async现在是一件事,在你真正发现问题之前不要担心它的表现

#include<future>
#include<chrono>
#include<utility>

using namespace std::literals;

template<typename Fn, typename... Args>
auto delay(std::chrono::milliseconds ms, Fn fn, Args&&... args)
{
    return std::bind([ms, fn](Args&&... args) {
        std::this_thread::sleep_for(ms);
        return fn(std::forward<Args>(args)...);
    }, std::forward<Args>(args)...);
}

void some_work() {}

int main()
{
    auto f = std::async(delay(10ms, some_work));
    f.get();
}