probleme mit mehreren Threads und Zugriff auf variable
probleme mit mehreren Threads und Zugriff auf variable
He leute,
ich habe vor einiger zeit an einem server/client geschrieben, der für eins meiner Programme gedacht ist. der zweck ist, dass der Server über mehrere Threads läuft und auch auf gemeinsame listen (linked lists oder auch variablen) zugreift. ich bekomme deshalb des öfteren speicher zugriffsfehler wobei sich dadurch mein Programm verabschiedet. die frage ist, kann man diese sachen vill. vorrübergehend für die anderen sperren, und diese dann wieder freigeben wenn der vorgang beendet ist oder habt ihr villeicht ne bessere idee hierfür?
danke schon im vorraus
haggi
ich habe vor einiger zeit an einem server/client geschrieben, der für eins meiner Programme gedacht ist. der zweck ist, dass der Server über mehrere Threads läuft und auch auf gemeinsame listen (linked lists oder auch variablen) zugreift. ich bekomme deshalb des öfteren speicher zugriffsfehler wobei sich dadurch mein Programm verabschiedet. die frage ist, kann man diese sachen vill. vorrübergehend für die anderen sperren, und diese dann wieder freigeben wenn der vorgang beendet ist oder habt ihr villeicht ne bessere idee hierfür?
danke schon im vorraus
haggi
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- 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
Ähm Mutex()?
edit: zu langsam...
Ansonsten, genau sowas habe ich schonmal geschrieben, kannste dir ja mal anschauen und dich inspirieren lassen
http://www.purebasic.fr/german/viewtopic.php?t=17579
edit: zu langsam...
Ansonsten, genau sowas habe ich schonmal geschrieben, kannste dir ja mal anschauen und dich inspirieren lassen

http://www.purebasic.fr/german/viewtopic.php?t=17579
wow wart Ihr schnell!
das ging ja tierisch schnell! hätt nett gedacht dass das so schnell geht! danke an euch beiden! werd mir dass mal anschauen, ggf werde ich noch ein oder zwei sachen fragen 

super gnasen geht genau in die richtung! die ich haben will, wie gesagt will auch nen server machen! ich denk da kann ich einiges rausholen! sag mal, ist das teil auch für mehrere clients geeignet also wenn ich z.b. 5 anfragen hab und da mehrere gleichzeitig kommen? (ich weiß lingt echt doof!) aber da hatte ich bisher probleme damit! damit könntest du mri echt viel arbeit sparen!
danke auch nochmal an NicTheQuick! werde mir dass auf jeden fall auch beides noch anschauen!
gruß haggi
danke auch nochmal an NicTheQuick! werde mir dass auf jeden fall auch beides noch anschauen!
gruß haggi
Ein Mutex für eine Variable ist ein bisschen viel Overkill.
Braucht man nicht. Für Arrays ebenfalls nicht.
Bei LinkedLists würde ich evtl. Mutex benutzen, weil die dynamisch sind.
Für Variablen und Arrays genügt es jedoch, Threadsafe in den Compileroptionen einzuschalten. Bitte die Hilfe lesen!!!!!!!
Braucht man nicht. Für Arrays ebenfalls nicht.
Bei LinkedLists würde ich evtl. Mutex benutzen, weil die dynamisch sind.
Für Variablen und Arrays genügt es jedoch, Threadsafe in den Compileroptionen einzuschalten. Bitte die Hilfe lesen!!!!!!!
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- 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
So, soAND51 hat geschrieben:Ein Mutex für eine Variable ist ein bisschen viel Overkill.
Braucht man nicht. Für Arrays ebenfalls nicht.
Bei LinkedLists würde ich evtl. Mutex benutzen, weil die dynamisch sind.
Für Variablen und Arrays genügt es jedoch, Threadsafe in den Compileroptionen einzuschalten. Bitte die Hilfe lesen!!!!!!!

Threadsafe ist nur für die Libs selber, sowie für den Stringmanager. Nicht für Variablen.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Bitte den Beitrag lesen!!!!!!!1111AND51 hat geschrieben:Bitte die Hilfe lesen!!!!!!!
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
ich hab das Teil im HardcoreEinsatz (es waren 128 Clients gleichzeitig eingeloggt) getestet ohne Probleme...haggi hat geschrieben:super gnasen geht genau in die richtung! die ich haben will, wie gesagt will auch nen server machen! ich denk da kann ich einiges rausholen! sag mal, ist das teil auch für mehrere clients geeignet also wenn ich z.b. 5 anfragen hab und da mehrere gleichzeitig kommen?
gruß haggi
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Gut, ich überarbeite meine Antwort nocheinmal.
Für lokale Dinge (Protected) braucht man kein Threadsafe, außer bei Strings. Lokale Arrays und LinkedLists sind ebenfalls kein Problem.
Um lokale Strings zu verarbeiten sollte Threadsafe aktiviert werden.
Lediglich globale Strings, Arrays, LinkedLists und alle anderen, komplexeren Vorgänge und Ressourcen sollten per Mutex geschützt werden.
Für lokale Dinge (Protected) braucht man kein Threadsafe, außer bei Strings. Lokale Arrays und LinkedLists sind ebenfalls kein Problem.
Um lokale Strings zu verarbeiten sollte Threadsafe aktiviert werden.
Lediglich globale Strings, Arrays, LinkedLists und alle anderen, komplexeren Vorgänge und Ressourcen sollten per Mutex geschützt werden.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End