Frage zum Mutex

Für allgemeine Fragen zur Programmierung mit PureBasic.
Joshua314
Beiträge: 115
Registriert: 06.04.2005 22:44

Frage zum Mutex

Beitrag 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
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Frage zum Mutex

Beitrag von WPö »

Moin!

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

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Joshua314
Beiträge: 115
Registriert: 06.04.2005 22:44

Re: Frage zum Mutex

Beitrag 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
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: Frage zum Mutex

Beitrag von Lambda »

Wo/wie setzt du den StatusBar Inhalt? Nutzt du TryLockMutex?
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Frage zum Mutex

Beitrag von WPö »

Alternativ könntest Du mal zum Ausprobieren LockMutex nutzen, sofern das Deine Ablaufsteuerung hergibt.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Frage zum Mutex

Beitrag 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!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Frage zum Mutex

Beitrag 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?
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Frage zum Mutex

Beitrag 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ö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Frage zum Mutex

Beitrag von ts-soft »

Nur das Erzeugen von Fenstern / Gadgets ist nicht erlaubt, aber SendMessage, SetGadgetText usw. usw.,
laufen normalerweise problemlos aus einem Thread heraus.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Joshua314
Beiträge: 115
Registriert: 06.04.2005 22:44

Re: Frage zum Mutex

Beitrag 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
Antworten