Questions tagged «stdasync»

3
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::cout << f.get() << '\n'; 和 auto f = std::async(std::launch::async, [](int a, int b) { return a + b; }, 2, 3); std::cout << f.get() << '\n'; 似乎做的完全一样。我知道,如果std::async与一起跑步,可能会有很大的不同std::launch::deferred,但是在这种情况下,有没有区别? 这两种方法之间有什么区别,更重要的是,我应该在哪种用例中使用一种而不是另一种?

5
为什么要使用std :: async?
在尝试使用std :: async并阅读其定义的同时,我试图深入探索新C ++ 11标准的所有选项,我注意到至少在gcc 4.8.1的Linux下有两件事: 它称为async,但它确实具有“顺序行为”,基本上在您调用与async函数foo相关联的future的行中,该程序将阻塞直到foo执行完毕。 它取决于与其他库完全相同的外部库以及更好的非阻塞解决方案,这意味着pthread,如果要使用std::async,则需要pthread。 在这一点上,我很自然地问为什么甚至在一组简单的函子上都选择std :: async?该解决方案甚至根本无法扩展,您调用的未来越多,程序的响应性就越差。 我想念什么吗?您能否显示一个示例,该示例被授予以异步,非阻塞方式执行?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.