В моем приложении у меня есть обратный вызов, и, если происходит определенное событие, он должен выполнить определенные операции.
void callback()
{
if(event == true)
{
// long processing
performOperations();
}
}
Дело в том, что обратный вызов вызывается с частотой 30 Гц, а выполнение функции performOperations
также может занять ~ 10 секунд.
После быстрого поиска в Интернете я обнаружил std :: asyn c. Стратегия, которую я хочу реализовать, заключается в том, что если performOperations
запущен и происходит новый event
, я хочу «убить» (красиво остановить) запущенный поток и запустить новый, который по-прежнему запускает функцию performOperations
.
Итак, примерно так:
void callback()
{
if(event == true)
{
// check if there's a running thread
if(already_running == true)
{
// stop nicely the running thread
...
}
// long processing
performOperations();
}
}
Поэтому у меня вопрос. Есть ли способ узнать, что performOperations
все еще запущен, и убить его?
Спасибо