在C++中使用异步函数总是一个好主意吗?
我的意思是,很多时候,我们可能需要做一些简单的事情,比如做一个函数,返回天气,不是素数,等等,那么,这会使C++代码更快还是更慢呢?
//示例代码
#include <iostream>
#include <future>
using namespace std;
bool AsyncTest(int n){
//do some stuffs
return true;
}
int main(int argc, char *argv[])
{
for(int i=1;i<=10;i++){
future<bool>ans=async(launch::async,AsyncTest,i);
cout<<ans.get()<<endl;
}
}
感谢阅读
这很大程度上取决于你的情况。
我将描述几种情况。
情况一:所有任务处理起来都非常迅速。与创建不同线程所面临的开销相比,所有计算时间的总和是很小的。
->你将获得没有、很少甚至是负的速度提升。
情况二:所有任务都需要很长时间。
->你可能会得到一个速度提升。
情况三:一个任务需要很长时间,其他的任务很快。
->如果并行计算其他任务,您可能不会得到速度提升,因为这并不重要。
情况4:任务需要共享资源(如文件访问)
->您可能不会得到速度提升,因为所有任务都必须等待才能获得对共享资源的独占访问权。
结论:
还有更多的情况可以发生。因此,为了将速度提升归档,您必须