C\C++ Thread-

文章作者:里海
来源网站:https://blog.csdn.net/WangPaiFeiXingYuan


简介

说明

C\C++ Thread-_第1张图片

时间

c语言的时间处理:time.h

获取从1970年1月1日到当前经过的秒数:

long t0 = time(NULL);

让程序暂停3秒:

sleep(3);

当前时间的3秒后:

long t1 = t0 + 3;

        可见c语言没有时间类型的区分,容易导致单位错误和混淆时间点和时间段。再比如t0*3,乘法对时间点而言是无意义的,但是c语言将他看作是long类型,允许时间点的乘法,容易让程序员犯错。

        c++从第11个版本就将时间标准化了,c++11引入了时间标准库。

c++11语言的时间处理:引入时间标准库std::chrono

        该库明确区分时间点和时间段,明确区分不同的时间单位。时间点是指一个具体的时间,如2023年6月13日20点48分10秒;时间段是指时间的长度,如1分30秒。在该库中,时间点类型为chrono::steady_clock::time_point等,时间段类型为:chrono::milliseconds(毫秒)、chrono:seconds(秒)、chrono::minutes(分钟)等。

        该库方便了时间的运算符重载,如时间点加上时间段等于新的时间点,时间点减去另一个时间点等于时间段。

        可以使用chrono::steady_clock::now()获取当前时间点,使用时间点加上时间段可以得到新的时间点,使用两个时间点相减可以得到时间段,然后可以使用duration_cast将时间段转换为不同的时间单位,如转换为秒数。整体来看,std::chrono库提供了方便、易用的时间处理功能,下面是例子。

获取当前时间点

 auto t0 = std::chrono::steady_clock::now();

当前时间点的30秒后

 auto t1 = t0 + std::chrono::seconds(30);

获取两个时间点的差(时间段)

auto dt = t1 - t0;

获取时间差的秒数

int64_t sec = std::chrono::duration_cast(dt).count();

计算程序运行花费的时间,例如下面计算第7行程序运行的时间微秒数

C\C++ Thread-_第2张图片

 使用double类型,提高精度,返回带小数点的微秒数

C\C++ Thread-_第3张图片

std::this_thread::sleep_for可跨平台,可以指定单位,例如:暂停400微妙

C\C++ Thread-_第4张图片

 进程与线程

你可能感兴趣的:(C\C++,数学建模,NX二次开发,UG二次开发,c++,开发语言)