Wykonywanie kilku funkcji co określony czas bez blokowania programu – jak to wykonać?

0

Hej,
Chciałbym wrzucić sobie kilka funkcji w nieskończoną pętle - która będzie się odpalać co przykładowo 30min, nie blokując tym samym reszty kodu.
Pytanie brzmi jak moge to zrobić?

int count = 0;
    while(true)
    {
        count +=1;
        std::cout << count  << std::endl;
        Sleep(1000*60*30);
    }

Coś takiego niestety blokuje mi cały program - kod, który jest poniżej pętli - nie wykona się. Jest to zwykła konsolowa aplikacja (windows). Chciałbym to mieć na maxa uproszczone, bez żadnych bibliotek i cudów.

0

Wrzuć pętlę do osobnego wątku.

0

W bibliotece standardowej użyjesz std::steady_clock do zmierzenia czasu oraz std::sleep_until(...) do oczekiwania do danego punktu w czasie. std::sleep_for(...) się do tego celu nie nadaje (jeśli kod który pokazałeś tak ma działać). Jeśli chcesz zatrzymać wykonanie po określonym czasie, najłatwiej z "wątku main(...)", ustawić flagę zakończenia. Precyzja wymaga by była to flaga atomowa (std::atomic_bool np.). Flaga powinna być testowana w każdym przebiegu pętli.
Całość funkcji uruchom w oddzielnym wątku lub std::async(std::async, ...).

1 użytkowników online, w tym zalogowanych: 0, gości: 1