Registriert seit: 8. Mär 2008
4 Beiträge
|
Synchronisieren von hauptthread und Teilthread
8. Mär 2008, 23:37
Hallo da draußen !
In meinem Programm scheinen RTEs daher zu kommen, dass ein bestimmter Thread, nennen wir ihn Thread_A, bestimmte Daten verändert und der Hauptthread, z.B. in einem TimerEvent oder einem form-Refresh manchmal genau in dem Moment auf diese Daten zugreift, wenn es offensichtlich nicht passt.
Ich habe versucht, den Code in der Timerroutine bzw. beim Aufbau der Anzeige des Hauptthreads mit CriticalSection.enter / Leave solange auszusperren, bis der thread_a mit der Berechnung fertig ist.
Aber dies klappt offensichtlich nicht. Der Code im Hauptthread hinter dem "cs.enter" wurde immer ausgeführt. Darin besteht mein Problem.
Weitere Erkentnisse in diesem Zusammenhang:
o Im Hauptthread kann man mehrmals dasselbe criticalSection.enter aufrufen.
o Der thread_a bleibt beim ersten cs.enter stehen und läuft beim nächsten cs.Leave aus dem Hauptthread wieder weiter.
o N x cs.enter erfordern auch N x cs.leave, damit thread_a wieder läuft
o Es gibt einen Totalstillstand, wenn zuerst cs.leave ohne vorheriges cs.enter aufgerufen wird
Vielen Dank vorab für einen Hinweis in dieser Sache.
|