Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de ::  C (C89, C99 und C11) ::  Problem bei random-wert,struct, thread
Antwort schreiben
Benutzername:
Titel:
Nachrichtentext:
  :)  :D  ;)  :(  :p  :mad:  :rolleyes:  :eek:  :confused:  :cool:  :o)  :leak:  :live:  :die:  :idea:  :arrow:  :warning: 
                             
                         
         
           
                             
                             
                             
             


BBCode in diesem Beitrag deaktivieren [BBCode]
Smilies in diesem Beitrag deaktivieren
Problem bei random-wert,struct, thread and 303659
     


Themen-Überblick 
(Aktualisieren)
Autor Nachricht
SeppJ
10:03:33 21.05.2012   Titel:   Zitieren

s.luis schrieb:

hat wer ein gutes tutorial für threads, ausgenommen die standard-dinge.
join vs. exit ist ein Standardding. Dir fehlen die Grundlagen. Das sollte muss jedes brauchbare Tutorial behandeln.
s.luis
20:01:06 20.05.2012   Titel:   Zitieren

DirkB schrieb:
Hatt SeppJ doch schon geschrieben:
Reduziere deinen Code schrittweise auf das wesentliche. Wenn der Fehler nicht mehr auftaucht, ist er im entfernten Teil..


das war die richtige taktik.
danke :live: :live: :live:

:D
s.luis
19:38:59 20.05.2012   Titel:   Zitieren

ich glaube, ich habe es jetzt. der fehler liegt darin, dass ich immer pthread_exit genommen habe, statt pthread_join. somit terminiert der main-thread vorher und wartet nicht auf die anderen threads.
wenn er vorher terminiert, dann ist das ergebnis blödsinn, terminiert er nachher dann stimmt es.
deshalb hat auch der hack mit dem sleep gefunzt.
fixxxxxxmee :D

gehört zwar schon ins unix-forum,aber was soll es.

hat wer ein gutes tutorial für threads, ausgenommen die standard-dinge.
und man-pages die man nur dann versteht wenn man eh schon alles gecheckt hat.
:o)

danke+lg luis
DirkB
19:26:51 20.05.2012   Titel:   Zitieren

Hatt SeppJ doch schon geschrieben:
Reduziere deinen Code schrittweise auf das wesentliche. Wenn der Fehler nicht mehr auftaucht, ist er im entfernten Teil.

Zeig doch mal deine Funktion output. Die rufst du doch mit pthread_create auf.
s.luis
19:18:13 20.05.2012   Titel:   Zitieren

aber ich muss Hrn. SeppJ schon recht geben. habe diesbezüglich sicher noch lernbetarf.
habe es bei einem anderen bsp versucht. wieder ein fehler.

das pthread_create macht nicht das was es soll, bei mir halt nicht :mad:

neues beispiel mit nur einem thread.
der nur eine funktion ausführt und wieder derselbe timing-fehler.
weise vorher die werte zu (mit outputs kontrolliert) und dann übergebe
ich die struct dem pthread_create und ein wert stimmt manchmal nicht.
shit shit :mad:
vielleicht habt ihr welche tipps,bbbiiiiittttteeee :)
s.luis
12:39:40 20.05.2012   Titel:   Zitieren

weiters noch: habe genug tutorials schon gelesen, macht aber keinen besseren programmierer, sondern die übung ist es. wie bei einem handwerk.
und beim üben bin ich gerade dabei. :live: :live: :live:
s.luis
12:15:52 20.05.2012   Titel:   Zitieren

SeppJ schrieb:
sleep ist einer der dümmsten pseudo Workarounds für eine Race-Condition. Wie kann man mit Threads programmieren wollen ohne die absoluten Grundlagen von Threads zu kennen? Zieh dir unbedingt mal ein Tutorial rein!


Jetzt erkläre mir mal eines SeppJ, wennst du dir den code ansiehst, bekommt jeder
thread bevor er erstellt wird schon seine Zufallszahl zugewiesen. Wie kann es da zu einer race-conditon führen???
die zufallszahl wird dann in einer struct an den output-übergeben.

es ist sicher ein timing-problem, jedoch weiss ich nicht warum. sonst hätte ich
hier nicht um rat gefragt, sondern hätte einfach die lösung gepostet.

ich kann auch mit joins auf einen thread warten. würde das problem auch lösen, jedoch nicht die ursache.

luis
SeppJ
23:50:31 19.05.2012   Titel:   Zitieren

sleep ist einer der dümmsten pseudo Workarounds für eine Race-Condition. Wie kann man mit Threads programmieren wollen ohne die absoluten Grundlagen von Threads zu kennen? Zieh dir unbedingt mal ein Tutorial rein!
s.luis
18:45:43 19.05.2012   Titel:   Zitieren

Hallo Kollegen,

habe den Fehler gefunden.

Ist zwar nicht die schönste Lösung aber wenn ich
Sleep(1); in die Randomfunktion einbaue dann funktioniert alles super.

Scheint mir liefert die random-Funktion nicht schnell genug die Werte für mehrere Threads und deshalb kommen auch komische Dinge heraus.
Wenn ich ein mutex darüberlege geht es auch.
Habe jetzt mein Prg mit 5000-Threads laufen gelassen, war zwar nicht schnell, aber es arbeitet Korrekt.

Dankeschön für die Hilfe.

:)

LG
Luis
DirkB
18:32:53 19.05.2012   Titel:   Zitieren

s.luis schrieb:
Aber ich muss sagen der Fehler liegt sicher hier in der Region.
Da bist du nicht der Erste der sich da täuscht. Leider auch nicht der Letzte.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.