Stoper

Stoper pozwala na wysyłanie sygnału lub uruchamianie kodu w regularnych odstępach czasu. Możliwe jest ustawienie czasu między iteracjami, opóźnienia startu oraz maksymalnej liczby iteracji. W kodzie wywoływanym przez stoper (blok kodu lub funkcja podana podczas tworzenia stopera; funkcja obsługi sygnału wysyłanego przez stoper) dostępny jest numer iteracji, dokładny czas od ostatniej iteracji oraz od uruchomienia stopera.
Stoper działa równolegle z żółwiami (włączając żółwia, który go utworzył). Każda iteracja stopera skutkuje utworzeniem nowego zadania, które jest dodawane do kolejki zadań żółwia/żółwi. Kolejna iteracja nie może następić przed zakończeniem poprzedniej - jeśli wykonanie danej iteracji jest dłuższe niż czas pomiędzy iteracjami, kolejna iteracja jest pomijana.
Wszystkie wartości oznaczające czas podawane są w milisekundach.

Przykład 1:

to onsignaltick :turtle :data
  (print :turtle :data)
end

"t := (timer "tick 300 50 3)

Rezultat wykonania:
W każdym wierszu wynik wykonania pojedynczej iteracji: nazwa żółwia i tablica zawierająca numer iteracji, czas od ostatniej iteracji i całkowity czas od uruchomienia stopera.

first {1 49.9921875 49.9921875}
first {2 300.0234375 350.015625}
first {3 302.015625 652.03125}

Przykład 2:
Funkcja wykonywana przez stoper ma dostęp do samego stopera (pierwszy argument funkcji) - umożliwia to np. programowe zatrzymanie stopera przy pomocy instrukcji stoptimer.

to fn :tx :iter :dt :time
  (print :iter :dt :time)
end

"t := (timer $fn 300 50 3)

Rezultat wykonania:
W każdym wierszu wynik wykonania pojedynczej iteracji: numer iteracji, czas od ostatniej iteracji i całkowity czas od uruchomienia stopera.

1 57.0078125 57.0078125
2 300.015625 357.0234375
3 300.0234375 657.046875

Przykład 3:

"t := (timer [(print :iter :dt :time)] 300 50 3)

Rezultat wykonania:
W każdym wierszu wynik wykonania pojedynczej iteracji: numer iteracji, czas od ostatniej iteracji i całkowity czas od uruchomienia stopera.

1 51.0078125 51.0078125
2 300.015625 351.0234375
3 300.0234375 651.046875

Zobacz także:

timer - utwórz stoper

Spis treści