1、 TicToc 类
这个类以前就写过,在我的文章里有,目的是打印逝去的时间,如下所示:
class TicToc
{
public:
TicToc()
{
tic();
}
void tic()
{
start = std::chrono::system_clock::now();
}
double toc()
{
end = std::chrono::system_clock::now();
std::chrono::duration elapsed_seconds = end - start;
start = end;
return elapsed_seconds.count() * 1000;
}
private:
std::chrono::time_point start, end;
};
2、消耗时间的操作
int result_future()
{
int i=0,ret = 0;
std::this_thread::sleep_for(std::chrono::seconds(2));
return ret + 1;
}
用sleep 2 秒来代表消耗时间的操作
主函数使用异步调用方法:
std::future result = std::async(result_future);
当我们使用result.get()的时候,会阻塞操作,从时间函数的计算上可以看出来,再调用这个函数之前,我们可以继续往下走,一直走到我们确实需要结果的时候,调用get,result_future如果需要2秒时间,我们主函数小于2秒,那么这个总时间还是2秒左右。
使用promise,可以省去我们在另外一个线程中和主线程的通信,直接让其get,就能阻塞,在get之前,我们依然可以执行我们要执行的指令。
int main()
{
TicToc tt;
std::future result = std::async(result_future);
printf("this is a test\n");
printf("this is another test\n");
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?