Doch, die gibt es. Irgendwo in diesem Thread ist schon der Begriff "Race Condition" gefallen, such einfach mal danach.Miko hat geschrieben:und wenn ein thread schreibt und einer liest dürfts doch keine probleme geben oder?
Threadprogrammierung mit Variablen
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"
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"
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.
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.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Um dir bei Problemen zu helfen, die du nicht mit Hilfe von $SUCHMASCHINE loesen kannst.Miko hat geschrieben:aber wozu sind dann solche foren da?
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?
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.
Oh stimmt, Leonidas hats erklärt. Hab den Begriff der mir fremd war wahrscheinlich überlesen oder nicht behalten.
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
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.
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.
@ 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.
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.
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
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
Angenommen wir würfeln das Ergebnis aus:
Welche Güte können wir dabei erreichen? ;-)
Welche Güte können wir dabei erreichen? ;-)