183得票4回答
packaged_task和async之间有什么区别?

在使用C++11的线程模型时,我注意到std::packaged_task<int(int,int)> task([](int a, int b) { return a + b; }); auto f = task.get_future(); task(2,3); std::cou...

60得票2回答
何时使用 Promise 而不是 Async 或 Packaged_task?

在何时应该使用std::promise,而不是std::async或std::packaged_task?您能给我一些实际的例子吗?

16得票2回答
std::packaged_task在销毁时是否会破坏承诺?

使用封装任务时,我遇到了一些非常奇怪的事情。在阅读~packaged_task时,我得到的印象是,如果一个std::packaged_task在执行之前被销毁,那么承诺将被取消,并且从未来获取结果的尝试应该抛出std::future_error。 然而,在Visual Studio 2013中...

9得票2回答
如何创建带参数的packaged_task?

在阅读了这篇非常好的教程后,学习了有关futures、promises和packaged tasks的知识,我决定自己尝试准备任务。 #include <iostream> #include <future> using namespace std; int ack...

9得票1回答
使用std::packaged_task时,std::future仍然被推迟(VS11)

似乎除非您调用std::async,否则std::future将永远不会设置为除了get或wait以外的任何其他状态。即使任务已经运行并存储了结果,wait_for和wait_until仍将继续不阻塞并返回future_status::deferred。以下是示例: #include &lt...

8得票3回答
为什么std::packaged_task<void()>无效?

使用MSVC2012编译器, 下面的代码将按预期编译并运行。 std::packaged_task&lt; int() &gt; task( []()-&gt;int{ std::cout &lt;&lt; "hello world" &lt;&lt; std::endl; return ...

8得票1回答
使用packaged_task和线程可能会出现数据竞争问题

最近我在我的项目上运行了valgrind --tool=helgrind,得到一个警告“可能的数据竞争”,这让我感到担忧。然而,即使是这个简单的测试程序也会出现这个消息: #include &lt;iostream&gt; #include &lt;thread&gt; #include &...

8得票3回答
为什么 std::future 从 std::packaged_task 和 std::async 返回的方式不同?

我了解到,从`std::async`返回的`future`具有特殊的共享状态,通过该状态可以在`future`的析构函数中发生`wait on returned future`。但是当我们使用`std::packaged_task`时,它的`future`不会表现出相同的行为。 要完成打包任...

7得票3回答
std::packaged_task是如何工作的

我正在分析以下代码片段,并试图详细了解它: template&lt;typename FUNCTION, typename... ARGUMENTS&gt; auto ThreadPool::add( FUNCTION&amp;&amp; Function, ARGUMENTS&amp;&a...

7得票2回答
在C++11中实现一个简单的通用线程池

我想为实验目的(以及趣味因素)创建一个线程池。它应该能够处理各种任务(这样我可能可以在以后的项目中使用它)。 在我的线程池类中,我将需要某种形式的任务队列。由于标准库自C++11标准提供了std::packaged_task,因此我的队列将类似于std::deque> task_queue,...