无法理解这个LARGE_INTEGER行

时间:2016-07-21 18:51:30

标签: windows scheduler

我正在查看有关使用QueryPerformanceFrequency进行调度的一些代码。我无法理解这里发生了什么。为什么rvalue用括号括起来? LARGE_INTEGER是一个结构体,因此初始化需要{},但完全被这一行所困惑。 QueryPerformanceFrequency也返回一个bool。

// Initialize the resolution of the timer
LARGE_INTEGER Timer::m_freq = (QueryPerformanceFrequency(&Timer::m_freq), Timer::m_freq);

标头包含一个带有私有成员的Timer结构:

static LARGE_INTEGER m_freq;

1 个答案:

答案 0 :(得分:1)

很糟糕。正如评论者所说的那样糟糕。

鉴于QueryPerformanceFrequency应该是一个廉价的调用,很少需要将它作为全局(静态)变量进行缓存。

改为做。

  1. 从类声明中的m_freq变量中删除static声明。

  2. m_freq班级的构造函数中初始化Timer

  3. 示例:

    Timer::Timer()
    {
        BOOL result = QueryPerformanceFrequency(&m_freq);
    
        if (result==FALSE)
        {
            // optional - set error condition.  But it's not like
            // the original code was handling the potential error either
        }
    }