46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef _MTICK_H_
 | ||
| #define _MTICK_H_
 | ||
| 
 | ||
| 
 | ||
| /******************************************************************
 | ||
|  *
 | ||
|  *	$ 增强GetTickCount函数库 $
 | ||
|  *  
 | ||
|  *  - 主要功能 - 
 | ||
|  *
 | ||
|  *	可使用64位的TickCount。内部解决了TickCount在超过49天后重新开始的问题。
 | ||
|  *  同时,提供了一个在整个进程中使用同步的TickCount的机制,即通过SetTickCountEx
 | ||
|  *  函数来设置同步的时间值,从而避免在多处理器中不同处理器之间的频率差异带来的问题
 | ||
|  *
 | ||
|  *****************************************************************/
 | ||
| #include "os_def.h"
 | ||
| 
 | ||
| #define _getTickCount		tick64::GetTickCountEx
 | ||
| //#define _timeGetTime		tick64::GetTickCountEx
 | ||
| 
 | ||
| namespace tick64
 | ||
| {
 | ||
| 	//取机器运行时间的函数,函数返回的是毫秒值,
 | ||
| 	//如果硬件支持查询PerformanceCounter则可避免49天的整数溢出的问题
 | ||
| 	/***
 | ||
| 	  实际测试后此函数性能较差,因为查询CPU中断会导致进入内核并可能挂起
 | ||
| 	  r3级的线程。此外在多处理器中如果各个处理器之间频率有误差,则可能
 | ||
| 	  导致由不同线程的连续的两次调用,后者取得的时间值比前者要晚的问题。
 | ||
| 	***/
 | ||
| 
 | ||
| 	#ifdef _MTICK64
 | ||
| 	typedef int64_t TICKCOUNT64;
 | ||
| 	typedef TICKCOUNT64	TICKCOUNT;
 | ||
| 	#	define GetTickCountEx		GetTickCount64
 | ||
| 	TICKCOUNT64 GetTickCount64();
 | ||
| 	#else
 | ||
| 	typedef int64_t	TICKCOUNT;
 | ||
| 	//typedef TICKCOUNT32	TICKCOUNT;	
 | ||
| 	#	define GetTickCountEx		GetTickCount32
 | ||
| 	TICKCOUNT GetTickCount32();
 | ||
| 	#endif
 | ||
| 
 | ||
| };
 | ||
| 
 | ||
| #endif
 |