我一直在尝试更多关于 C++ 中的多线程编程,但我很难理解std::promise
,所以我开始在这个网站上搜索答案,低头看,有人和我有同样的问题。但是阅读答案让我更加困惑这是答案中的代码可能是类似的实现std::packaged_task
template <typename> class my_task;
template <typename R, typename ...Args>
class my_task<R(Args...)>
{
std::function<R(Args...)> fn;
std::promise<R> pr; // the promise of the result
public:
template <typename ...Ts>
explicit my_task(Ts &&... ts) : fn(std::forward<Ts>(ts)...) { }
template <typename ...Ts>
void operator()(Ts &&... ts)
{
pr.set_value(fn(std::forward<Ts>(ts)...)); // fulfill the promise
}
std::future<R> get_future() { return pr.get_future(); }
// disable copy, default move
};
在这段代码中,
1-这种语法是什么意思template <typename R, typename ...Args> class my_task<R(Args...)>
,更具体地说,目的是<R(Args...)>
什么?
2-为什么班级有前向减速?
谢谢