Variablen in Threads
Verfasst: 17.11.2009 00:05
Hi,
Naja um Variablen gehts nicht wirklich. Eigentlich bin ich momentan meine Programme am Optimieren. Und Projekte am vergrößern. Naja und da habe ich immer wieder Bugs, die mehr oder weniger die gleiche Ursache haben, woltle ich versuchen, die mal in den Griff zu bekommen. Meine Frage ist sozusagen eine Frage, wie ich mein Programmierverhalten verbessern kann. Am besten stell ich euch einfach mal mein Problem vor.
Als Beispiel, es gibt 2 Threads, die beide miteinander Kommunizieren. Der 1. Thread zeigt die Werte im Fenster an und der 2. Rechnet sie aus.
In Thread 2 werden jede Menge Variablen miteinander Addiert und Geteilt und wieder neu definiert etc. bis irgendwann ein Wert herauskommt. Die Beispiele einfach etwas größer Vorstellen, so wie sie in einem 10000 Zeilen Projekt aussehen würden...
Beispiel:
Das Problem ist nun. Wenn ich jetzt das Programm beende bzw. beide Thread beendet werden (siehe Ende = 5) und dann später die Threads wieder aufgerufen werden hat x,r, Blockgröße und noch Hunderte andere Variablen einen Wert. Außerdem hat Beenden den wert 5 und die Prozedur wird sofort beendet.
Ok, dafür gibt es zwar eine Möglichkeit, aber die ist glaube ich nicht optimal.
Naja, das Problem ist nur, das ich erstens mal, sehr viele aufräumer Proceduren habe und dass ich dann z.B. vergesse einen Wert auf 0 zu stellen. Oder zu viel aufräume (also z.B. was Nulle, das ein Fenster noch braucht etc.
Optimal wäre jetzt so ein Schlüsselwort wie Define, das eine Variable Global macht , aber sich von selbst auf Null bzw "" setzt, wenn der Thread, in dem das Ding Definiert wurde beendet wird.
Sowas gibts aber glaube ich nicht.
Ich hoffe, ihr habt mein Problem verstanden und habt eine Idee.
Naja um Variablen gehts nicht wirklich. Eigentlich bin ich momentan meine Programme am Optimieren. Und Projekte am vergrößern. Naja und da habe ich immer wieder Bugs, die mehr oder weniger die gleiche Ursache haben, woltle ich versuchen, die mal in den Griff zu bekommen. Meine Frage ist sozusagen eine Frage, wie ich mein Programmierverhalten verbessern kann. Am besten stell ich euch einfach mal mein Problem vor.
Als Beispiel, es gibt 2 Threads, die beide miteinander Kommunizieren. Der 1. Thread zeigt die Werte im Fenster an und der 2. Rechnet sie aus.
In Thread 2 werden jede Menge Variablen miteinander Addiert und Geteilt und wieder neu definiert etc. bis irgendwann ein Wert herauskommt. Die Beispiele einfach etwas größer Vorstellen, so wie sie in einem 10000 Zeilen Projekt aussehen würden...
Beispiel:
Code: Alles auswählen
global r
....
..
....
Procedure Thread2()
Blockgröße = menge.l/Mb*Anzahl.l
Repeat
x+x
Blockgröße+Blockgröße
x = Getgadgettext(...)
r = x*Menge/rts
....
.....
.......
Blockgröße+x
If Ende = 5
end
endif
Forever
endprocedure
Code: Alles auswählen
Procedure Thread1()
setgagdgetstate(#www, r)
...
...
Ende = 5
endprocedure
Ok, dafür gibt es zwar eine Möglichkeit, aber die ist glaube ich nicht optimal.
Code: Alles auswählen
Procedure Aufräumer()
r = 0
menge = 0
Blockgröße = 0
x = 0
trs.s = ""
p.l = 0
.....
...
...
endprocedure
Optimal wäre jetzt so ein Schlüsselwort wie Define, das eine Variable Global macht , aber sich von selbst auf Null bzw "" setzt, wenn der Thread, in dem das Ding Definiert wurde beendet wird.
Sowas gibts aber glaube ich nicht.
Ich hoffe, ihr habt mein Problem verstanden und habt eine Idee.