Timer nie zatrzymujący działania kodu

0

znam podstawy programowania w C++, ale ciekawi mnie jak można zroibć niezależny timer. Taki, który nie zatrzymuje działania kodu. Kod swoją drogą, timer swoją.

Potrzebuję zrobić coś 10 razy co 2,5 sek.

int i2 = 0;
		
		clock_t goal;
		goal = 5 + clock();
		while(true)
		{
          if(i2 == 10) break;

		  money += 10000;
		  test_set(money);

		  goal = 5 + clock();
          
          delay(2500);

		  i2++;
		}

Mam coś takego, ale to niestety zawiesza całą aplikację na parę sekund..

0

Najłatwiej stworzyć osobny wątek, w którym zrealizujesz timer.

0

Jeśli to ma być niezależne od systemu i nie wielowątkowe to: pętla sprawdzająca czy nastał już właściwy czas, jeśli nie to rób coś innego jeśli tak to wykonaj działanie, które ma być co 2,5 s.

0

No właśnie... w czym to ma być? System, kompilator, IDE... W WinAPI na przykład możesz nie tylko w nowym wątku to zrobić, ale np za pomocą funkcji SetTimer

0

Jak pod windowsem to pomocna może być funkcja WaitForMultipleObjects, MsgWaitForMultipleObjects. Czekać możemy na dosłownie wszystko - timer, wejście konsoli, wiadomość WinAPI, inny wątek lub proces, strumień, obiekt synchronizacji ...

typowe użycie:

for(;;)
{
   switch(WaitForMultipleObjects(...))
   case 0: /* akcja na pierwsze zdarzenie */ break;
   case 1: /* akcja na drugie zdarzenie */ break;
   ...
}

@Andrzej Patrecki: dałeś nam za mało informacji. Oprócz tego o co pytał Ranides wytłumacz nam co twoja aplikacja ma robić pomiędzy tyknięciami timer'a i czym ma być to "coś" co wykonujesz 10 razy.

0

A jak Linux, albo też Windows, to polecałbym też w allegro. To co prawda raczej do prostych gier i grafiki płaskiej, ale timery też ma i to dosyć rozbudowane, na pewno jest o wiele prostsza w użyciu niż WinApi.

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