[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fw: Re: Co 30 sek.



Jak podają anonimowe źródła, przepowiedziano, że Leonard Milcin, Jr napisze:

> >>Bynajmniej tym sposobem nie uruchomisz skrypta dokładnie co 30s.
> >>Jeżeli chce, żeby uruchamiać coś naprawdę co 30 sekund, to też może użyć
> >>crona. Wystarczy, że o każdej pełnej minucie uruchomi dwa zadania.
> >>1:
> >>do_this();
> >>2:
> >>sleep 30 && do_this();
> >>Proste, i zawsze będzie się uruchamiało w spodziewanych momentac, tj. o
> >
> >            ^^^^^
> >>pełnych minutach i w ich połówkach.
> >
> >  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^            
> >
> >do_this() {
> >	sleep 10
> >	}
> 
> 
> Nie bardzo rozumiem twojej odpowiedzi. Może jakieś słowo komentarza?

To był komentarz...

> Miało być co 30 sekund, a nie co 10s+czas uruchomienia procedury.
> Chyba, żę się mylę.

Nie bierzesz pod uwagę, że zrobienie czegokolwiek zajmuje 
zwykle pewien czas. Jeśli do_this wykonuje się przez 10s,
to od pierwszego uruchomienia do_this do drugiego zejdzie 
40+ sekund, a nie 30. Dodatkowo ten czas wcale nie musi być stały.

-Jeśli do_this wykonuje się w 15+s, a potencjalnie zacznie się
jakiś wyścig.
-Jeśli do_this albo cokolwiek na wyjściu, wejściu czy gdzie bądź
bazuje na tych 30s, to rezultaty mogą być nieoczekiwane.

Wyeliminowanie konieczności czekania na zakończenie do_this
częściowo eliminuje drugi problem, ale nie pierwszy.

Innymi słowy - taka realizacja jest potencjalnie niestabilna 
i dołożenie do tego crona nie uczyni jej bardziej stabilną.

Tego typu rozwiązanie nadaje się do zastosowania w _pewnych przypadkach_
(po zastosowaniu blokad, sekcji krytycznych i innych tego
typu rozwiązań potencjał do wykorzystania zwiększa się, ale
wciąż nie nieskończony).

Co innego, gdybyśmy chcieli uruchamiać coś 30s po tym, jak 
poprzednia kopia zakończyła działanie, ale zadanie _nie było_
takie.

Pozdrawiam

-- 
Jacek Kawa  **Ray, następnym razem, jak ktoś zapyta cię, czy jesteś
                       bogiem, to odpowiedz, że tak...**



Reply to: