1.std::future<int> t1 = async(func1)
线程不能用for循环创建
2.只有数据大于一定的范围线程才有节约空间的效果,不然线程创建也消耗时间
创建三个函数
测试消耗时间:当数据为1千万
测试消耗时间:当数据为1万
//测试普通、线程同步、线程异步时间对比(数据为1千万,两个函数相加结果为2千万)
using namespace std;
int num = 10000000;
int FunA()
{
int data = 0;
for (int i=0;i< num;i++)
{
data++;
}
return data;
}
int FunB()
{
int data = 0;
for (int i = 0; i < num; i++)
{
data++;
}
return data;
}
int main()
{
clock_t start_t, end_t;
double total_t;
start_t = clock();
std::cout << "程序启动,start_t = " << start_t << std::endl;
int sum = 0;
//普通
//sum += FunA() + FunB();
//同步
/* int data1 = 0,data2=0;
thread a([&] {data1 = FunA(); });
thread b([&] {data1 = FunB(); });
a.join();
b.join();
sum += data1 + data2;*/
//异步
std::future<int> t1 = async(FunA);
std::future<int> t2 = async(FunB);
sum += t1.get() + t2.get();
std::cout << "sum: " << sum << std::endl;
end_t = clock();
std::cout << "耗时操作结束,end_t = " << end_t << std::endl;
total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
std::cout << "CPU 占用的总时间:" << total_t << std::endl;
return 0;
}
普通时间:0.043
同步时间:0.027
异步时间:0.022