sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #39252
Re: Køre et program med 30 sek mellemrum?
Jesper Hess Nielsen wrote:
> Hej folkens
>
> Hvad er den smarteste måde at køre et program hvert 30. sekund på? Jeg skal
> bruge det til at sample noget data fra en router. Jeg har indtil videre
> lavet en (vil jeg kalde det) lappeløsning med en
>
> while : ; do
> #do stuff ... tager lidt tid ...
> sleep 29
> done
>
> Er der en smartere måde at gøre det på?
>
> /Jesper
jo det er der.
jeg regner med at det er c, eller c++ du arbejder med, så der er faktisk en
del løsninger.
brug af pthread_mutex_timedwait eller en anden vente funktion. Hvor der
specificeres et starttidspunkt.
dvs sådan her ->
time = grap time.
i=0;
while(1) {
wait (time + i++ * 30)
do what ever
}
en mere rafineret løsning er at lave at signal som leveres for hvert 30 sekund
(fx SIGALRM) og så ellers lave en signalhandler, hvor kaldende task bliver
suspendet.
Anders Gnistrup
References