Seite 1 von 1

Frage zum Mutex

Verfasst: 22.05.2013 08:08
von Joshua314
Hallo Leute,

ich hab hier ein Programm geschrieben, welches verschiedene Dateien in getrennten Thread's einliest. Weiterhin hab ich eine Uhr laufen, welche auch in einem Thread läuft.
Damit ich ein wenig Info habe wie der Status der einzlenen Threads habe, habe ich einen Statusbar ins MainWindow gelegt.

Obwohl ich den Zugriff auf Statusbar mit einem Mutex Schütze, im Thread und im Main Programm bekomme ich laufend einen Speicherverletzung Abbruch.
Auch wenn ich auf Delay(5) komme bricht mir das PRG ab.
Hat mir mal einer einen Tip, wo dort der Zusammenhang ist ????

Das Posten des PRG ist problematisch, da ich die ganzen einzulesenden Daten mit posten müsste.

Gruß Thomas

Re: Frage zum Mutex

Verfasst: 22.05.2013 08:34
von WPö
Moin!

Probier mal im Menü Compiler -> Compiler-Optionen -> Compiler-Optionen -> Thread-sicheres Executable erstellen aus.

Gruß - WPö

Re: Frage zum Mutex

Verfasst: 22.05.2013 08:47
von Joshua314
WPö hat geschrieben:Moin!

Probier mal im Menü Compiler -> Compiler-Optionen -> Compiler-Optionen -> Thread-sicheres Executable erstellen aus.

Gruß - WPö
Sorry bringt keinen Unterschied.

Obwohl ich oben im PRG

Code: Alles auswählen

Global StatusbarMutex.l
StatusbarMutex = CreateMutex()
anlege. Bekomme ich

[Error] Der angegebene Mutex existiert nicht.

Gruß Thomas

Re: Frage zum Mutex

Verfasst: 22.05.2013 08:55
von Lambda
Wo/wie setzt du den StatusBar Inhalt? Nutzt du TryLockMutex?

Re: Frage zum Mutex

Verfasst: 22.05.2013 09:01
von WPö
Alternativ könntest Du mal zum Ausprobieren LockMutex nutzen, sofern das Deine Ablaufsteuerung hergibt.

Gruß - WPö

Re: Frage zum Mutex

Verfasst: 22.05.2013 09:20
von ts-soft
Joshua314 hat geschrieben:

Code: Alles auswählen

Global StatusbarMutex.l
StatusbarMutex = CreateMutex()
Benutzt Du eine 64-Bit Version?
Aber auch wenn nicht, eine Integer-Variable wäre in jedem Falle die bessere Wahl!

Re: Frage zum Mutex

Verfasst: 22.05.2013 09:54
von NicTheQuick
Soweit ich weiß kann man Fenster und Gadgets auch nicht aus anderen Threads heraus steuern, sondern nur aus dem Hauptthread. War das nicht immer so?

Re: Frage zum Mutex

Verfasst: 22.05.2013 10:40
von WPö
Sehr gut, Nic, jetzt fällt's mir wieder ein. Der Zugriff auf die GUI darf nicht aus Nebenläufern heraus stattfinden. Da bin ich vor Jahren schonmal böse auf die Schnauze gefallen.

Lösung: Der Nebenläufer signalisiert per Nachrichtensystem, was es will und die Ereignisschleife des Hauptprogramms führt das dann aus. Damit klappt's dann auch mit der GUI.

Gruß - WPö

Re: Frage zum Mutex

Verfasst: 22.05.2013 10:57
von ts-soft
Nur das Erzeugen von Fenstern / Gadgets ist nicht erlaubt, aber SendMessage, SetGadgetText usw. usw.,
laufen normalerweise problemlos aus einem Thread heraus.

Re: Frage zum Mutex

Verfasst: 22.05.2013 10:59
von Joshua314
WPö hat geschrieben:Sehr gut, Nic, jetzt fällt's mir wieder ein. Der Zugriff auf die GUI darf nicht aus Nebenläufern heraus stattfinden. Da bin ich vor Jahren schonmal böse auf die Schnauze gefallen.

Lösung: Der Nebenläufer signalisiert per Nachrichtensystem, was es will und die Ereignisschleife des Hauptprogramms führt das dann aus. Damit klappt's dann auch mit der GUI.

Gruß - WPö

Hallo Zusammen,

Das ist genau das , was ich vermutet habe. Denn genau so verhält sich alles ... Ich Falle auch immer auf die Schnauze, wenn ich versuche vom NebenThread auf dem MainWindow was zu machen...

Danke @ all für die Hilfe....

Gruß Thomas