Newsgroup: it.comp.lang.c
Titolo: Realizzare una pausa

Come è possibile realizzare una pausadi tot millisecondi in C. Esiste un
comando che lo permette?
Grazie

]

Windows 98.
Ciao


 comando che lo permette?
Dipende dal sistema. Se hai un SO POSIX compliant potresti vedere
nanosleep().
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

Windows 98.
Se non mi sbaglio (non programmo sotto windows) ci dovrebbe essere
essere un API del tipo Sleep(ms);


essere un API del tipo Sleep(ms);
Esatto.
Alcuni sistemi come il djgpp e i compilatori borland supportano
un'istruzione sleep().
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

comando che lo permette?
Non esiste un' istruzione standard per poterlo fare. Dipende dalla
piattaforma o dal compilatore che stai utilizzando. Ad esempio sui
compilatori della Borland potrai trovare sleep(secondi), mentre su
Djgpp esiste un' istruzione usleep(microsecondi) che blocca
l'esecuzione del programma per un numero di microsecondi pari al
valore passato dalla funzione. Un metodo standard efficace portebbe
essere quello di realizzare il ritardo tramite un ciclo di for o più
cicli di for annidati.
Il Ghenio
-----
Proteggeremo il mondo della devastazione!
Uniremo tutti i popoli nella nostra nazione!
Denunceremo i mali della verità e dell'amore,
Estenderemo il nostro potere fino alle stelle.
Jesse!
James!
Team Rocket pronto a partire alla velocità della luce.
Arrendetevi subito oppure preparatevi a combattere.
Miaaaoooo, proprio cosi'!
(Team Rocket)
-----

 cicli di for annidati.
Non credo sia molto efficace, dato che il ritardo creato in tal modo sarebbe
funzione diretta della frequenza del processore.
Ivan Molella

 cicli di for annidati.
Se intendi un ciclo "a vuoto", mi sa che un compilatore che sia un
minimo furbo non lo considererebbe proprio...
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

funzione diretta della frequenza del processore.
Certo, lo so che non é il massimo della precisione, lo so che il
ritardo cambierebbe da processore a processore, ma é l'unico sistema
standard che conosco per realizzare una pausa nell' esecuzione del
programma. E' sottointeso che l'utilizzo di funzioni non standard in
questo caso resta comunque una scelta da preferire.


minimo furbo non lo considererebbe proprio...
??? Cosa intendi per compilatore furbo?


]

 
Un compilatore furbo e' un compilatore ottimizzante ( ! con
l'ottimizzatore che funziona ! ma questa e' un'altra storia )
potrebbe essere in grado di trasformare costrutti del tipo : 
for (i=0;i<100;i++)
    for (j=0;j<100;j++)	
        ;
in 
i=100;
j=100;
e vi garantisco che ci sono compilatori che ci riescono !
o addirittura del le due variabili non sono usate in altri punti
eliminare anche le assegnazioni ( in questo caso si parla di dead
assignement )
per cui usare dei cicli vuoti per generare ritardi potrebbe essere
inutile
inoltre anche cose del genere 
for (i=0;i<100;i++)
    for (j=0;j<100;j++)	
	a=10;
possono essere inutili

possono essere inutili
E se fosse:
for(x=0; x<1000; x++)
for(y=0; y<1000; y++)
    if(y % 10 == 0 )z++;
Questo non é un ciclo vuoto il quanto la variabile z viene
incrementata di uno ogni qualvolta y é divisibile per 10. E' un
sistema come un altro per perdere tempo senza fare niente di
particolare. In questo caso l'ottimizzatore come si comporterebbe?
Ed in questo?
x= unnumeromoltogrande;
y=0;
while (x>0)
    {
    x--;     
    if(x % 5 == 0) y++;



Praticamente hai scritto un programma per eseguire il nulla :)
Mi sembra una forma  poco elegante per creare dei ritardi di tempo,e per
quanto riguarda le ottimizzazioni, il grado di ottimizzazione si puo
impostare in fase di compilazione e se il livello e' 0,non credo che il
compilatore si metta a togliere codice trasformando talvolta il
risultato di determinate operazioni,o riducendo le informazioni di
debug.
Ivan Molella

 
Esatto, proprio quello che intendevo.


 
anche qui ci sono possibilita' come sopra
mi sembra che l'ottimizzatore non posso tagliare il codice solo se
all'interno dei cicli ci sia una chiamata ad una funzione , in wqunato
l'ottimizzatore in questo caso ha difficolta' a stabilire gli eventuali
side effect della funzione stessa
questo giusto per far notare che un 'buon' compilatore puo'
scombussolare i nostri tentativi di programmazione, e sopratutto
compotrta il fatto che un ritardo siffatto puo' essere un effettivo
ritardo o un niente a secondo del compilatore usato

 delay()

> delay()
In quale compilatore?
