Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Warum funktioniert das? (Threads)

  Alt 3. Apr 2006, 16:46
Zitat von alzaimar:
Ich würde mal so sagen: Lesen kannst Du immer, insofern ist das Tutorial an der Stelle vielleicht etwas zu pingelig.

Aber beim Schreiben wirds haarig. Wenn zwei Threads eine gemeinsame Variable munter hochzählen, sollte nach 10 Schritten je Thread die Zahl um 20 höher sein. Ist sie aber nicht, außer man kapselt das Hochzählen in Critial Sections.
Thread a liest Variable X, Thread b schreibt einen Wert hinein.
Thread b sperrt die Variable.
Thread a hat keinen Plan dass es diese Sperre gibt.
Thread a liest X während b hineinschreibt.
a bekommt einen "halben" Wert, eine Hälfte geändert von b, die andere Hälfte noch wie vorher. Aber definitiv nicht das was a hätte lesen sollen.
Vllt bin ich etwas zu sehr .Net-versaut und die Sperre von b gilt doch für a...
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat