Srand(time(NULL)) => probleme de fork
Fermé
batmat
Messages postés
1871
Date d'inscription
jeudi 1 novembre 2001
Statut
Membre
Dernière intervention
9 janvier 2008
-
3 avril 2002 à 15:04
jojo - 26 mars 2009 à 19:43
jojo - 26 mars 2009 à 19:43
A voir également:
- Srand (time(null))
- Time machine - Guide
- Salat time - Télécharger - Agendas & Calendriers
- Quick time - Télécharger - Lecture
- Popcorn time download - Télécharger - TV & Vidéo
- Time sync - Télécharger - Outils Internet
4 réponses
grand_guerrier
Messages postés
6
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
3 avril 2002
3 avril 2002 à 15:10
3 avril 2002 à 15:10
il faut utiliser la fonction wait()
ou un select avec tous les paramatres a NULL sauf le dernier ou tu mets le temps en seconde que tu veux attendre
ou un select avec tous les paramatres a NULL sauf le dernier ou tu mets le temps en seconde que tu veux attendre
Et pourquoi pas seeder avec le pid ?
grand_guerrier
Messages postés
6
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
3 avril 2002
3 avril 2002 à 15:17
3 avril 2002 à 15:17
avec wait ou select ca marche tres bien,mais je ne sais pas ce que c seeder?
batmat
Messages postés
1871
Date d'inscription
jeudi 1 novembre 2001
Statut
Membre
Dernière intervention
9 janvier 2008
114
5 avril 2002 à 19:36
5 avril 2002 à 19:36
1 ) seed en anglais, ca veut dire graine,
pour générer un nombre"pseudo-aléatoire", en général on prend la graine time(NULL) tout simplement parce qu'elle change tout le temps
=> srand(time(NULL))
2) wait ca serait pas plutot pour attendre la mort d'un fils ? tu veux plutot dire sleep je pense ? select je ne connais pas
@+
-------------------
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
pour générer un nombre"pseudo-aléatoire", en général on prend la graine time(NULL) tout simplement parce qu'elle change tout le temps
=> srand(time(NULL))
2) wait ca serait pas plutot pour attendre la mort d'un fils ? tu veux plutot dire sleep je pense ? select je ne connais pas
@+
-------------------
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
Tu as plusieurs fils je suppose ???
Tu initialises le Rand, dans le code du(des) fils ou pas avant de Forker ?
Sinon tu pourrais essayer d'initialiser ton Srand avec le PID du fils créé, ça te ferais une base pseudo-aléatoire pour ton temps...
A essayer. Je vois rien d'autre pour l'instant mais je vais y réfléchir
parce-que c'est effectivement un bon sujet de casse-tête.
Ciao bon courage. BigBen.
Tu initialises le Rand, dans le code du(des) fils ou pas avant de Forker ?
Sinon tu pourrais essayer d'initialiser ton Srand avec le PID du fils créé, ça te ferais une base pseudo-aléatoire pour ton temps...
A essayer. Je vois rien d'autre pour l'instant mais je vais y réfléchir
parce-que c'est effectivement un bon sujet de casse-tête.
Ciao bon courage. BigBen.
seeder = initialiser le générateur de nombres aléatoire avec une graine (seed).
Mais il n'y a pas un device sous Unix qui fourni des données aléatoires ? (/randpool ou quelquechose comme ça ?)
ça serait déjà mieux que le rand() du C.
Mais il n'y a pas un device sous Unix qui fourni des données aléatoires ? (/randpool ou quelquechose comme ça ?)
ça serait déjà mieux que le rand() du C.
batmat
Messages postés
1871
Date d'inscription
jeudi 1 novembre 2001
Statut
Membre
Dernière intervention
9 janvier 2008
114
5 avril 2002 à 18:39
5 avril 2002 à 18:39
si : /dev/random fournit des données temps réel proche de l'idéal aléatoire : le systeme fait des prises d'états des periphériques à plusieurs instants t, un truc marrant à essayer, tu fais cat /dev/random
c un fichier qui se génère tps réel (comme je viens de le dire :-) si tu ne touche à rien , tu vois que ca s'arrete puis que ca repart (idle se lance par exemple)
=> ce fichier est génial pour les besoins d'acces aléatoires
un autre fichier un peu moins aléatoire est /dev/urandom il marche un peu differement, c pour le cas ou tes données aléatoires doivent arriver un peu moins de facon saccadée comme /dev/random (genre pour un jeu par exemple, les ralentissements seraient chiants ;-)
Voila ce que je sais :-))
Pour ceux que le pb interesse, en fait j'en ai besoin parce qu'en ce moment je programme des sémaphores et des variables partagées
=> N processus ont un RDV ... mais pour les faire démarrer dans un ordre aléatoire, et qu'ils n'attendent pas le meme temps, c la le pb :-)
merci à tous
@+
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
c un fichier qui se génère tps réel (comme je viens de le dire :-) si tu ne touche à rien , tu vois que ca s'arrete puis que ca repart (idle se lance par exemple)
=> ce fichier est génial pour les besoins d'acces aléatoires
un autre fichier un peu moins aléatoire est /dev/urandom il marche un peu differement, c pour le cas ou tes données aléatoires doivent arriver un peu moins de facon saccadée comme /dev/random (genre pour un jeu par exemple, les ralentissements seraient chiants ;-)
Voila ce que je sais :-))
Pour ceux que le pb interesse, en fait j'en ai besoin parce qu'en ce moment je programme des sémaphores et des variables partagées
=> N processus ont un RDV ... mais pour les faire démarrer dans un ordre aléatoire, et qu'ils n'attendent pas le meme temps, c la le pb :-)
merci à tous
@+
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
jojo
>
batmat
Messages postés
1871
Date d'inscription
jeudi 1 novembre 2001
Statut
Membre
Dernière intervention
9 janvier 2008
26 mars 2009 à 19:43
26 mars 2009 à 19:43
tu repart simplement sur une nouvelle graine
exemple : pour chaque processus srand( time ( NULL) + getpid() )
là tu es sur d'avoir des valeur différente pour ton rand apres
exemple : pour chaque processus srand( time ( NULL) + getpid() )
là tu es sur d'avoir des valeur différente pour ton rand apres