c语言有办法取得当前纳秒或微秒级的时间吗

c语言有办法取得当前纳秒或微秒级的时间吗,第1张

C语言获取当前系统时间的几种方式

C语言获取系统时间的几种方式

C语言中如何获取时间?精度如何?

1 使用time_t time( time_t timer ) 精确到秒

2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒

3 计算时间差使用double difftime( time_t timer1, time_t timer0 )

4 使用DWORD GetTickCount() 精确到毫秒

5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒

6 要获取高精度时间,可以使用

BOOL QueryPerformanceFrequency(LARGE_INTEGER lpFrequency)

获取系统的计数器的频率

BOOL QueryPerformanceCounter(LARGE_INTEGER

lpPerformanceCount)

获取计数器的值

然后用两次计数器的差除以Frequency就得到时间。

7 Multimedia Timer Functions

The following functions are used with multimedia timers

timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime

用的是线程函数还是MFC中的线程类?

如果是函数,把一个long型值当线程参数传入(传其地址),然后在线程中对其赋值即可。

int main(int argc,char argv[])

{

long threadTime;

beginthreadex(,threadproc,&threadTime);

//wait for thread quit

//threadTime == 线程的运行时间

}

ulong threadproc(LPVOID param)

{

long plTime = (long)param;

plTime = GetCurrentTime();

return 0;

}

如果是一个类,就直接用类变量就可以了。

你说的是 SetTimer吧?

UINT_PTR SetTimer(

HWND hWnd, // 窗口句柄

UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器

UINT nElapse, // 时间间隔,单位为毫秒

TIMERPROC lpTimerFunc // 回调函数

);

如果你在MFC中使用的话 由于已经被封装了 所以不需要制定hWnd参数了。

iIDEvent这个标志一般就是自己定义的标志,比如计算时间需要一个定时器,计算其他的东西需要定时器,也就是说需要区别不同的定时器。

nElapse就是间隔多长时间触发一次定时器。

最后一个参数就是回调函数,意思就是当定时器触发的时候需要哪个函数来处理数据,当设置为NULL的时候,就是调用ONTIME函数,你可以再MFC中重载该函数。

例如

#define UM_TIMER WM_USER+1

SetTimer(UM_TIMER,1000,NULL); //每间隔1秒触发,并且使用ONTIMER函数。

然后在

C::OnTimer(UINT_PTR nIDEvent)

{

if(nIDEvent == UMTIMER)

{

这个地方填写你需要处理的东西。

}

}

计算时间差使用double difftime( time_t timer1, time_t timer0 )2 使用clock_t clock()得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 使用DWORD GetTickCount() 得到的是系统运行的时间 精确到毫秒4 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒5 要获取高精度时间,可以使用BOOLQueryPerformanceFrequency(LARGE_INTEGERlpFrequency)获取系统的计数器的频率BOOLQueryPerformanceCounter(LARGE_INTEGERlpPerformanceCount)获取计数器的值然后用两次计数器的差除以Frequency就得到时间。6 还有David的文章中提到的方法:MultimediaTimer FunctionsThefollowing functions are used with multimedia timerstimeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTimetimeGetTime/timeKillEvent/TimeProc/timeSetEvent精度很高Q:GetTickCount()函数,说是毫秒记数,是真的吗,还是精确到55毫秒?A:GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。具体例子可以参考QA001022"timeGetTime函数延时不准"。GetSystemTime返回的是格林威志标准时间GetLocalTime,和上面用法一样,返回的是你所在地区的时间,中国返回的是北京时间VOID GetSystemTime(LPSYSTEMTIME lpSystemTime // address of system time structure);函数就可以获得了,其中LPSYSTEMTIME 是个结构体含:年,月,日,周几,小时,分,秒,毫秒。

以上就是关于c语言有办法取得当前纳秒或微秒级的时间吗全部的内容,包括:c语言有办法取得当前纳秒或微秒级的时间吗、如何在MFC中获取某线程的运行时间急!、mfc 中Settime使用的具体步骤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10174066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存