Я занимаюсь разработкой приложения на C ++ с использованием Qt, и мне нужно каждую секунду асинхронно запускать функцию.
Приложение работает следующим образом:
- пользователь запускает функцию allityity;
- приложение вызывает конкретную функцию асинхронно, позволяя пользователю делать что-то еще в это время;
- когда пользователь останавливает функцию, приложение перестает вызывать функцию.
Для других функций я использовал интегрированные в Qt SLOTS и SIGNALS, например:
connect(timer, SIGNAL(timeout()), this, SLOT(updateView()));
timer->start(200);
, но для этой конкретной функции я хотел использовать только функциональность C ++, такую как thread, mutex, future, обещание и asynch .
Я пробовал что-то вроде этого:
if(cmd == start) {
std::future<void> fn = async(std::launch::async, [](){
// some code here
});
}
Таким образом, каждый раз, когда пользователь нажимает start , приложение вызывает функцию lambda.
Теперь я хочу, чтобы эта функция вызывалась каждую секунду, пока пользователь не нажмет stop , не побуждая его сделать что-то еще в это время.
Может кто-нибудь Помогите мне?