程序运行过程中,系统可能会去响应时钟中断等情况,由此一定会有相应的误差,建议多次实测取最小值,并把一次创建的线程(进程)的数量尽可能增大,使误差所占的比例缩小。 下面是gettimeofday函数及相关结构体的标注: 说明:在使用gettimeofday()函数时,第二个参数一般都为空,因为我们一般都只是为了获得当前时间,而不用获得timezone的数值,timezone即时区,初级阶段用不上。 waitpid()函数的第三个参数options:允许改变waitpid的行为。最常用的一个选项是WNOHANG, 它的作用是防止waitpid把调用者的执行挂起!#include"wrapper.h" #include<stdio.h> void main() { struct timeval start, end; pid_t pid[100]; pthread_t tid[100]; int i; gettimeofday(&start, NULL); for (i = 0; i < 100; i++) { pthread_create(&tid[i], NULL, pthread_exit, NULL);//不能调用exit,否则父进程都会退出 } gettimeofday(&end, NULL); printf("100次pthread_create:%ld微秒n", end.tv_usec - start.tv_usec); gettimeofday(&start, NULL); for (i = 0; i < 100; i++) { if ((pid[i] = fork()) == 0) { exit(0); } } gettimeofday(&end, NULL); printf("100次fork:%lld微秒n", (long long)(end.tv_usec - start.tv_usec));//数值比较大,防止变成负数 for (i = 0; i < 100; i++) { waitpid(pid[i], NULL, WNOHANG); pthread_join(tid[i], NULL); } exit(0); }
(可以略过)#include<sys/time.h> int gettimeofday(struct timeval* tv, struct timezone* tz) //timeval定义为: struct timeval{ long tv_sec;/*秒*/ long tv_usec;/*微妙*/ }; //timezone 结构定义为: struct timezone{ int tz_minuteswest;/*和greenwich 时间差了多少分钟*/ int tz_dsttime;/*type of DST correction*/ }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算