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