deepthroat
Erfahrenes Mitglied
Warum liest du denn nicht einfach mal die Dokumentation? http://linux.die.net/man/3/randProblem: multi thread
Nur der erste thread der auf die irand Funktion zugreift bekommt random Werte.
Ab dem zweiten thread erzeugt er identische Zahlenfolgen, offensichtlich weil die Initialisierung nicht thread übergreifend funktioniert, sprich ab dem zweiten thread rand() automatisch mit 1 initialisiert wird.
Dadurch das es nur einen Zufallszahlengenerator gibt, müßtest du den Zugriff auf diese Resource lediglich synchronisieren - oder z.B. die rand_r() Funktion verwenden, da diese threadsicher ist. Siehe DOKU.Ich müsste also die Initialisierung in jedem thread neu machen, was aber wieder bedeutet, werden 2 threads gleichzeitig gestartet, habe ich auch wieder identische Zahlenfolgen.
Gruß
PS: Willst du wirklich Zahlen von 0 bis 6 genieren? Für ein Würfelspiel sollte das wohl eher 1 bis 6 sein, oder?