begin process at 2012 05 29 13:07:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

GUI

 > 

nanosleep


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

nanosleep

lundi 11 septembre 2006 à 13:34:49 | nanosleep

blackdead08

exemple simple: [code] #include #include int main(int argc, char *argv[]) { int i; for(i=0; i<=5; i++) { printf("%d helloworld", i); usleep(1000000); } return 0; }[/code] Le programme devrait attendre 1 seconde avant d'afficher "helloworld" mais ce n'est pas le cas. Il attend 6secondes et affiche tout d'un coup... je résoud le problème avec : printf("%d helloworld\n", i); /*le retour à la ligne : \n*/ J'aimerai voir un exemple avec nanosleep car mon cher ami google m'a laissé tomber sur ce coup... merci d'avance
mardi 12 septembre 2006 à 02:46:15 | Re : nanosleep

AlexN

Réponse acceptée !
Les opérations d'entrées/sorties (disques, écran...) sont parmi les plus couteuses en temps qu'un système doit exécuter. Par conséquent, moins il en fait, mieux il se porte. Notamment pour le tampon de sortie écran, moins il aura à le vider, moins il le fera.
Le système ne vide ce tampon que dans quelques cas :
- Il est plein
- on le force à le vider (fflush(stdout) ou envoyer une chaine avec un retour chariot, par exemple)
- le système le vide tous les 'tant de temps'
Dans ton cas de chaînes sans retour chariot, c'est-à-dire sans conditions spéciales de vidage, le système adopte la politique du moindre effort et tant qu'il n'a pas rencontrer de conditions satisfaisantes, il ne fait rien (d'ou tes six secondes d'attentes et l'affichage de toutes les chaines d'un coup)
Dans le cas de tes chaines avec retour chariots, il rencontre une condition de vidage et il le fait, au fur et a mesure, tes chaines s'affichent 1 par seconde (à la louche)
Tu peux voir la même chose avec ça (remplacer le \n par un fflush()):
int main(int argc, char *argv[]) {
int i;
    for(i=0; i<=5; i++) {
    printf("%d helloworld", i);
    // fflush(stdout); // avant ou après usleep() c'est pareil
    usleep(1000000);
    fflush(stdout);
    }
return EXIT_SUCCESS;
}

le fflush(stdout) etant une autre condition pour forcer le système à vider le tampon, tes textes sont aussi affichés toutes les secondes, et non toutes ensembles au bout de six.

nanosleep() ne changera rien, je pense.

D'autre part si tu te documentes autour de usleep :
La fonction usleep() suspend l'exécution du programme appelant durant usec microsecondes. La période de sommeil peut être allongée par une charge système importante, et par le temps passé à traiter l'appel de fonction.
 
et pour nanosleep :
nanosleep suspend l'exécution du programme en cours pour une durée valant au moins *req. Cette fonction peut se terminer plus tôt que prévu si un signal a été reçu par le processus.

Dans aucun des deux cas tu n'auras l'assurance que la seconde d'attente est respectée. Tu n'auras qu'une approximation de ta seconde.
mardi 12 septembre 2006 à 15:35:27 | Re : nanosleep

blackdead08

Un grand merci AlexN c'est vraiment très précis :-)
mardi 12 septembre 2006 à 16:38:26 | Re : nanosleep

AlexN

de rien.
Coches la case 'réponse acceptée' pour que ça puisse servir à d'autres.


Cette discussion est classée dans : int, include, nanosleep


Répondre à ce message

Sujets en rapport avec ce message

Problème incompréhensible [ par JosueClement ] Regardez plutot...Ce programme est une sorte d'horloge!Il n'y a aucune erreur de compilation, mais les heures n'augmentent jamais!!A la ligne 54, j'ai Dans le genre prenant........ [ par Xs ] oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l J'ai créé un jeu de course mais .... [ par arconius ] Voila j'ai voulu créé un jeu de course de bonhommes mais étant débutant je suis confronté à un problème, mon bonhomme descend normalement dans le circ une fiche de renseignement [ par cabarrus ] je cherche à faire un programme qui demande des renseignements pour pouvoir ensuite les affiché comme une fiche d'identité!!!voici monprogramme mais m Difference [ par xionoxid ] C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i Couleur, sconio econio...marche po :( [ par starkrous ] #include #include int main(){textcolor( GREEN ); cout textcolor( WHITE );return 0;}>>resultat>> "fin de fichier inatendu lors de la recherche d'u Un caractère rébarbatif. [ par Nini ] Bon alors voilà ma source :#include #include "iostream.h"#include "iomanip.h"#include "math.h"char mult(int a, int b){ if (b%a==0) cout <<"Vrai ("<<b< Format de données [ par leskritiques ] Voici le programme que je veux modofier :#include "chaine.h"#include "entreeSortie.h"#include "chaine.cpp"#include "entreeSortie.cpp"int pgcd (const i Les nombres aléatoires en C++ (Visual C++ 6.0) [ par Yabo ] Tout d'abord voilà le code :CODE #include #include #include #include using namespace std;void animstartscreen() { int n Problemes de fonctions (niveau debutant) [ par zzzzzz ] en fait je veut faire un programme console dans le but de me familiariser avec les fonctions que je maitrise pas et que je veux apprendre. en francais


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales