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