gettimeofday

  调用gettimeofday()函数可以获取当前的格林尼治时间和当前时区。它的函数原型是:

int gettimeofday(struct timeval *restrict tp, void *restrict tzp);

  gettimeofday的参数涉及两个结构体:

struct timeval{
       time_t           tv_sec;      //秒(从1970.1.1)
       suseconds_t      tv_usec;     //微秒
};
struct timezone{
       int     tz_minuteswest;
       int     tz_dsttime;
};

  假设现在需要使用pthread_cond_timewait来阻塞一个线程,使用方法如下:

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t  lock = PTHREAD_MUTEAX_INITIALIZER;

struct timespec timeout;
get_timespec(&timeout, 500);
pthread_cond_timewait(&cond, &lock, &timeout);

void get_timespec(timespec *ts, int millisecond)
{
       struct timeval now;
       gettimeofday(&now,NULL);
       ts->tv_sec = now.tv_sec;
       ts->tv_nsec = now.tv_usec*1000;
       ts->tv_nsec += millisecond*1000;
}
时间: 2024-10-13 15:01:48

gettimeofday的相关文章

想精度高,可以考虑用c语言中的函数gettimeofday

大家好: 在 win32 + bcb 时, 有个 GetTickCount() 返回第统启动到现在的 tick, 单位 ms.请问在 Linux + qt5 怎样实现呢? 如果用 QDateTime , 精度只能到秒,而且运行过程中,如果用户改充了系统时间,就会出错了. 用QElapsedTimer. 想精度高,可以考虑用c语言中的函数gettimeofday,微秒级精度 #include <sys/time.h>int gettimeofday(struct timeval*tv, stru

linux中C语言获取高精度时钟gettimeofday函数

前言:    在开发中,很多时候需要知道各个函数或者是某些设备对命令的操作用时,因此需要用到 gettimeofday 来获取当前时钟. 一,函数说明 #include  int gettimeofday(struct timeval *tv, struct timezone *tz); 注意: 1.精确级别,微妙级别        2.受系统时间修改影响        3.返回的秒数是从1970年1月1日0时0分0秒开始 其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果: 结构体

gettimeofday() 获取系统时间,精确到微秒 这个似乎只能在linux 下用,不能在windows 下用

struct timeval{ long int tv_sec; // 秒数 同time(NULL) 的返回值 long int tv_usec; // 微秒数 10 的6次方 }; 1 struct timezone{ 2 int tz_minuteswest;/*格林威治时间往西方的时差*/ 3 int tz_dsttime;/*DST 时间的修正方式*/ 4 }; 1 #include <stdio.h> 2 #include <sys/time.h> 3 4 int mai

c语言之linux下gettimeofday函数windows替换方案

* Copyright (C) 2008 mymtom ([email protected]) * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of sour

关于&quot;implicit declaration of function &#39;gettimeofday&#39; is invalid in c99&quot;的解决

http://blog.csdn.net/macmini/article/details/10503799 当我们使用 gettimeofday(&time, NULL);时,会出现这样一个WARNING Implicit declaration of function 'gettimeofday' is invalid in C99 而经过搜索之后发现只需加入 #include <sys/time.h> 这个头文件即可 关于"implicit declaration of

日期时间篇asctime ctime gettimeofday gmtime localtime mktime settimeofday time

asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime,localtime 表头文件 #include<time.h> 定义函数 char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回.此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993\n” 返

C --gettimeofday===获取某个程序经历的时间

#include <stdio.h> #include <sys/time.h> #include <time.h> int gettimeofday(struct timeval*tv,struct timezone *tz); int main(int argc, char* argv[]) { int timeuse; struct timeval starttime,endtime; gettimeofday(&starttime,0); sleep(2

struct timeval和gettimeofday()

http://www.cppblog.com/lynch/archive/2011/08/05/152520.html struct timeval结构体在time.h中的定义为: struct timeval { time_t tv_sec; /* Seconds. */ suseconds_t tv_usec; /* Microseconds. */ }; 其中,tv_sec为Epoch到创建struct timeval时的秒数,tv_usec为微秒 struct timeval结构体在ti

clock()、time()、clock_gettime()和gettimeofday()函数的用法和区别

1. clock_gettime( ) 提供了纳秒的精确度 int clock_gettime(clockid_t clk_id, struct timespect *tp); clockid_t clk_id用于指定计时时钟的类型,对于我们Programmr以下三种比较常用: CLOCK_REALTIME, 系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变 CCLOCK_MONOTONIC:从系统启

Linux时间函数之gettimeofday()函数之使用方法

1.简介: 在C语言中可以使用函数gettimeofday()函数来得到时间.它的精度可以达到微妙 2.函数原型: #include<sys/time.h> int gettimeofday(struct  timeval*tv,struct  timezone *tz ) 3.说明: gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中 4.结构体: 1>timeval struct  timeval{ long  tv_sec;/*秒*/