[Tech] Dormi bambino, dormi tesor... (C help)

Simone Piccardi piccardi@fi.infn.it
Gio 26 Ott 2000 13:59:37 CEST


Marco Ermini wrote:
> > > Quello che devi fare e' un semplice while(), controllando al suo interno
> > > se sono passati i due secondi con una funzione tipo time()
> >
> > Se lo scopo e' occupare il 99% della cpu con un programma che non fa
> > niente, vai pure cosi'. :)
> >
> > No, in un sistema multitasking decisamente no.
> 
> Mi sa che hai franinteso quello che voleva fare lui. Lui non vuole
> fermare _il sistema_, vuole fermare _il suo programma_. Quindi non
> c'entra un tubo che il sistema sia multitasking o meno...
Appunto lui vuole fermare il suo programma, se fai come dici tu il
programma non lo fermi, lo fai girare in un loop di attesa occupando al
99% la cpu (e non fermi il sistema solo perche' c'e' il multitasking che
in caso di necessita' interrompe il loop). Per fermare un programma
(senza impegnare risorse inutilmente) c'e' sleep, il controllo viene
ceduto allo scheduler che non rimette attivo il processo fintanto che
non e' passato il tempo di attesa specificato.  

E che il sistema sia multitasking o no c'entra, perche' la tua soluzione
va bene se non e' multitasking (per cui gira un solo processo e se lo
devi fermare fai un loop di attesa), va molto meno bene se il sistema e'
multitasking e puoi dire a lui quando fermare e riattivare i processi
(seza stare a perdere tempo e CPU in un loop di attesa).

Ciao
-- 
Simone Piccardi
Microsoft is NOT the answer. Microsoft is the Question.
The answer is: "NO!"




Maggiori informazioni sulla lista flug-tech