Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti!
Ho aperto questa domanda per chiedere cosa fanno realmente le funzioni tipo sleep(). Ok, so che mettono in pausa il processo per il tempo indicato come parametro, ma più precisamente?
Chiedo questo perchè provando a misurare il tempo di esecuzione di un programma che ha una sleep() all'interno, il programma in questione mi stampa sempre 0.
Il programma in questione è questo:
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <time.h>
float diff(clock_t, clock_t);
int main(void){
clock_t start, end;
start =clock();
sleep(2);
end =clock();
printf("%gs\n", diff(end, start));
return0;
}
float diff(clock_t end, clock_t start){
return((float)(end - start))/CLOCKS_PER_SEC;
}
Questo semestre ho Sistemi Operativi, e mi viene da pensare che la sleep() metta il processo in attesa di un segnale che lo risvegli, ma sono mie supposizioni, ovviamente.
Aspetto qualche chiarimento, grazie a tutti.
Ultima modifica effettuata da NothingLeft il 05/12/2011 alle 11:26
Il codice non e' mio, e' preso da Advanced Programming in the Unix Environment. Alarm e' una syscall che genera un segnale allo scadere del tempo prefissato ed e' gestita dal kernel (che ha il suo modo di tenere traccia del tempo che passa). Sigsuspend si occupa di sospendere il processo fintanto che un segnale non viene ricevuto.
Ultima modifica effettuata da pierotofy il 05/12/2011 alle 16:25
Perfetto, esaurientissimo! Era un po' come mi aspettavo, grazie mille! :D - NothingLeft - 05/12/11 20:47
In Windows una Sleep causa il fatto che il thread viene posto in condizione
unrunnable
Quando il tempo è trascorso, lo scheduler lo pone in condizione
ready-to-run
Penso che Linux faccia in modo simile
Grazie mille per la risposta tempestiva e la delucidazione! :) - NothingLeft - 05/12/11 20:48
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.