Я написал класс 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);
}
...
}
Но когда установлено время таймера обратного вызова для вызова функции каждые 1 мс, не вызывайте и занимайте больше, например, 10 мс. Мне нужна помощь для улучшения кода для вызова функции обратного вызова (функция события этого таймера) в течение 1 мс и запуска в одном потоке с блокировкой. Как я могу это сделать? Пример использования этого класса:
Manager tester;
TimerCallback<microseconds> m_timer(chrono::microseconds(10),Core::Utility::ptr_fun(&tester,&Manager::runner));
Задача ещё не решена.
Других решений пока нет …