我正在看GoingNative 2012 Day 1 talk "C++11 style" by Bjarne Stroustrup,因为1:05:13他似乎在宣传async()
而不是线索。
我很惊讶,现在已经过去了4年,在C ++世界中,async()
与线程在性能和控制方面的优缺点是什么?
我迷失了不同的意见:
例如,关于表现:
一篇SO帖子C++11 thread vs async performance (VS2013)表示创建一个线程很昂贵(“Windows操作系统中的200 000个CPU周期”),但async()
将利用线程池更便宜;但是另一篇SO帖子Will async(launch::async) in C++11 make thread pools obsolete for avoiding expensive thread creation?并不这么认为(“操作系统有很多理由他们应该尽可能便宜地创建线程”)
在控制方面,以前我的印象是线程允许更多的控制;但是C#上的SO async vs threading, when to use each option?说“当你对低级线程参数进行控制时,线程有一些优点 - 这是非常罕见的。”
另外,我认为性能/控制很大程度上取决于实现。所以我想,在Bjarne推广async()
4年后,在性能和控制方面,与线程相比,它在C ++世界中的表现如何?