大佬教程收集整理的这篇文章主要介绍了c – std ::未来仍然延迟使用std :: packaging_task(VS11),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这里有一个例子:
#include <future> void main() { auto func = []() { return 5; }; auto asyncFuture = std::async(std::launch::async,func); auto status = asyncFuture.wait_for(std::chrono::seconds(0)); // timeout (1) auto deferredFuture = std::async(std::launch::deferred,func); status = deferredFuture.wait_for(std::chrono::seconds(0)); // deferred (2) std::packaged_task<int()> task(func); auto packagedTaskFuture = task.get_future(); status = packagedTaskFuture.wait_for(std::chrono::seconds(0)); // deferred (2) task(); status = packagedTaskFuture.wait_for(std::chrono::seconds(0)); // deferred (2) packagedTaskFuture.wait(); status = packagedTaskFuture.wait_for(std::chrono::seconds(0)); // ready (0) }
我没有当前的C11标准,但30.6.9中的标准草案表示,当运行一个packed_task时,应该将结果存储在将来的共享状态.这不是很清楚是否包括设置预期的wait_until / wait_for行为.
以前有关于异地@L_674_0@的这个领域VS11行为的问题:http://social.msdn.microsoft.com/Forums/hu/parallelcppnative/thread/4394f2c1-0404-40df-869b-f4fc36fc035c
此外,似乎其他编译器在这方面有问题:C++ 11 future_status::deferred not working
任何可能会更了解标准的人:这是预期的行为还是在VS11中实现的问题?
更新:我以某种方式错过了这个报告:http://connect.microsoft.com/VisualStudio/feedback/details/761829/c-11-unexpected-behavior-for-std-future-wait-for-and-std-packaged-task
以上是大佬教程为你收集整理的c – std ::未来仍然延迟使用std :: packaging_task(VS11)全部内容,希望文章能够帮你解决c – std ::未来仍然延迟使用std :: packaging_task(VS11)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。