C ++ Как узнать, что запущен поток с помощью std :: asyn c? - PullRequest
1 голос
/ 10 июля 2020

В моем приложении у меня есть обратный вызов, и, если происходит определенное событие, он должен выполнить определенные операции.

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 все еще запущен, и убить его?

Спасибо

...