Seite 2 von 2
Verfasst: Donnerstag 31. Mai 2007, 12:28
von EyDu
Miko hat geschrieben:und wenn ein thread schreibt und einer liest dürfts doch keine probleme geben oder?
Doch, die gibt es. Irgendwo in diesem Thread ist schon der Begriff "Race Condition" gefallen, such einfach mal danach.
Verfasst: Freitag 1. Juni 2007, 11:01
von Miko
Sorry ich kann mit dem Begriff nichts anfangen.
Verfasst: Freitag 1. Juni 2007, 11:27
von EyDu
Miko hat geschrieben:Sorry ich kann mit dem Begriff nichts anfangen.
Sind Wikipedia und Google wirklich so schwer zu bedienen...?
Verfasst: Freitag 1. Juni 2007, 14:13
von Miko
ich bin ja großer fan von sufus und suchmaschinen.
aber wozu sind dann solche foren da?
Ich kann alles bei google eintippen warum gibts dann python-forum.de?
In den letzten Jahren hat es sich wirklich dazu entwickelt dass solche foren nicht mehr als Plattform dienen sein wissen zu teilen sondern mehr als chatplatform für stammgäste und wenn jemand anderes mal was postet wird das ausgeschlachtet und geschrieben "Sufu benutzen".
Dann sollte das forum vielleicht besser geschlossen werden und ein text erscheinen "Bitte google benutzen"
Verfasst: Freitag 1. Juni 2007, 14:25
von BlackJack
Da tust Du diesem Forum unrecht. Ein einfaches "Ist Google heute kaputt" oder "RTFM" kommt hier *sehr* selten als Antwort.
Leonidas hat in Dir *in diesem Thread* erklärt was eine "race condition" ist. Und Rebecca hat gleich im nächsten Beitrag noch ein einfacheres, verständlicheres Beispiel dafür nachgeschoben.
Verfasst: Freitag 1. Juni 2007, 14:42
von Rebecca
Miko hat geschrieben:aber wozu sind dann solche foren da?
Um dir bei Problemen zu helfen, die du nicht mit Hilfe von $SUCHMASCHINE loesen kannst.
Sieh es doch mal so: Warum sollte jemand n Minuten seiner Zeit opfern, um hier etwas zu schreiben, was sowieso schon viel besser bei Wikipedia oder woanders steht?
Verfasst: Freitag 1. Juni 2007, 14:54
von Miko
klar rebecca seh ich auch so. Aber nahezu alles lässt sich irgendwo im internet finden. somit müsste man mindestens 95 % der Threads in diesem Forum hier löschen. Weil irgendwo stehts immer!
Oh stimmt, Leonidas hats erklärt. Hab den Begriff der mir fremd war wahrscheinlich überlesen oder nicht behalten.
Verfasst: Freitag 1. Juni 2007, 16:11
von Sr4l
Du hast den Wert 95% ind en Raum gewurfen
Dann behaupte ich mal 95% der Suchanfragen zum Thema Python mit deutscher Fragestellung führen in dieses Forum
Ich finde das Thema ja hochinteressant muss ich sagen also mal ne kleine zwischen Frage von mir) :
man kann doch das verändern von variablen einem eigenen thread als aufgabe geben. und mit do = 1 wird gesetzt wenn der thread etwas tut ersrt wenn do wieder auf 0 gestezte wird ( nach abschluss der aufgabe ) kann der thread neue aufgaben annehmen.
dadurch kann kein gleichzeitiges aändern vorkommen. vll kann man auch befehle in eine warteschlange packen und nach der ausführung löschen. diese warteschlange muss dann jedoch nach eingangsreihenfolge abgearbeitet werden.
Verfasst: Freitag 1. Juni 2007, 17:52
von Miko
@ Sr4l:
Dabei umgehst du aber das Problem wieder nicht. Laut den obigen Aussagen wechselt der Prozessor so häufig und schnell zwischen den Threads, dass do noch nicht im Arbeitsspeicher auf 1 gesetzt ist aber der 2te Thread schon anfange will die Variable zu ändern. Und dann ändern wieder beide Threads die Variable und einer überschreibt das Ergebniss des anderen (was noch aktzeptabel wär) oder das Programm stürzt ab.
grundlegendes
Verfasst: Dienstag 15. Januar 2008, 08:46
von smuerf
Weil hier ja allerhand Spekulationen zu gemeinsam genutzten Datenstrukturen ausgetauscht werden und da doch einiges nicht so klar zu sein scheint, hier meine Einschätzung:
Mit Threads handelt man sich leicht Inkonsistenzen ein!!! vor allem wenn man gemeinsam genutzte Variablen verwendet. Aber gerade das ist ja der Vorteil von Thraeds gegenüber zum Beispiel Prozessen. Man kann gemeinsame Variablen nutzen, das ist schnell und spart Speicherplatz!
Jetzt kommt der Haken: Man muss die gemeinsamen Variablen natürlich aber vor (pseudo)gleichzeitigem Schreibzugriff sichern! Das macht man mit Locks. Soweit sogut
Jetzt muss man für sich selbst entscheiden wie gut man sich mit (Pseudo)Parallelität auskennt. Wer sich nicht gut auskennt sollte auf Datenstrukturen, die erprobt und verifiziert sind, zurückgreifen und darüber, und nur darüber, auf seine gemeinsamen Variablen zugreifen! Wer meint es besser zu wissen kann natürlich versuchen ein wenig mehr Performance durch selbst verwaltete Locks aus dem Programm herauszuholen. Aber Vorsicht, wie schon erwähnt, wenn das Programm nur lange genug läuft und es kommt zu einer sogenannten "write violation" Schreibzugriffs-Inkonsistenz, ist das ganze Ergebnis des Programms womöglich nicht mehr brauchbar. Das nützt dann erst recht keinem was.
Also entscheide dich: Willst du mit wenig Aufwand ein Programm, was definitiv funktioniert, dann nutzte erprobte Datenstrukturen! Willst du etwas mehr Performace, dann investiere viel Zeit und schreibe dir deine eigenen Strukturen!
Ich hoffe ich habe das klargestellt
