使用c ++

时间:2017-07-06 11:36:46

标签: c++ multithreading callback condition-variable time-precision

我写了一个没有足够速度运行的timercallback类。

class Manager
{
    ...
    void CallFunction(Function<Treturn>* m_function)
    {
        do
        {
            if (m_Status == TimerStatus::Paused)
            {
                unique_lock<mutex> lock(m_MutexLock);
                m_Notifier.wait(lock);
            }
            while (m_Status != TimerStatus::Stoped&&m_Status != TimerStatus::Paused)
            {
            unique_lock<mutex> lock(m_MutexLock);
                m_Notifier.wait_for(lock, m_Interval);

                (*m_function)();
            }

        } while (m_Status == TimerStatus::Paused);
    }
    ...
}

但是当timercallback的设置时间每1ms调用一次时,不会调用并占用更多,例如10 ms。我需要帮助改进代码以在1毫秒内调用回调函数(此计时器的事件函数)并在一个带锁的线程中运行。我怎样才能做到这一点?使用此类的样本:

Manager tester;
TimerCallback<microseconds> m_timer(chrono::microseconds(10),Core::Utility::ptr_fun(&tester,&Manager::runner));

0 个答案:

没有答案