← Back to team overview

sslug-teknik team mailing list archive

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