相关疑难解决方法(0)

最快的定时分辨率系统

C/C++程序员可以使用的最快的计时系统是什么?

例如:
time()将给出自1970年1月1日00:00以来的秒数.
Windows上的GetTickCount()将给出自系统启动时间以来的时间(以毫秒为单位),但限制为49.7天(此后它将简单地回零).

我想获得当前时间,或者从系统/应用程序启动时间开始计时,以毫秒为单位.

最大的问题是方法的开销 - 我需要最轻的一个,因为我每秒钟要打多次.

我的情况是我有一个工作线程,对于那个工作线程我发布了待处理的工作.每个工作都有一个"执行时间".因此,我不关心时间是当前的"实际"时间还是系统正常运行时间以来的时间 - 它必须是线性的和轻的.

编辑:

unsigned __int64 GetTickCountEx()
{
    static DWORD dwWraps = 0;
    static DWORD dwLast = 0;

    DWORD dwCurrent = 0;

    timeMutex.lock();

    dwCurrent = GetTickCount();
    if(dwLast > dwCurrent)
        dwWraps++;

    dwLast = dwCurrent;

    unsigned __int64 timeResult = ((unsigned __int64)0xFFFFFFFF * dwWraps) + dwCurrent;

    timeMutex.unlock();

    return timeResult;
}
Run Code Online (Sandbox Code Playgroud)

c c++ windows time

9
推荐指数
3
解决办法
7163
查看次数

标签 统计

c ×1

c++ ×1

time ×1

windows ×1