我们要实现的是,使用多线程来计算 1 ~ n 范围的所有整数和。
计算运行时间
因为要将普通求和程序与多线程作比较,所以先介绍一下如何计算程序运行的时间。
获取时间函数:
#include<sys/time.h>
int gettimeofday(struct timeval*tv, struct timezone *tz);
参数:
其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果。tz 一般为NULL即可。
struct timezone{
int tz_minuteswest;/*格林威治时间往西方的时差*/
int tz_dsttime;/*DST 时间的修正方式*/
}
struct timeval{
long int tv_sec; // 秒数
long int tv_usec; // 微秒数
}
因为上面获取到的时间,拆分为了秒级和微秒两部分,我们需要将他们组合成一个准确的时间。下面是我自定义的函数:
double get_time()
{
struct timeval t;
gettimeofday(&t,NULL);
return t.tv_sec + t.tv_usec/