многопоточность — обратный вызов таймера с низкой точностью в микросекундах с потоком и блокировкой в ​​переполнении стека

Я написал класс 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));

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]