Procedure als eigenen Prozess parallel ausführen

Anfängerfragen zum Programmieren mit PureBasic.
elko68
Beiträge: 27
Registriert: 26.02.2010 14:50

Re: Procedure als eigenen Prozess parallel ausführen

Beitrag von elko68 »

Hallo KeyKon,

großes DANKE !!! - dass ist ein genialer Hinweis :allright:
Ich werde versuchen dass mal umzustricken - es sind ja vieleicht etwa 5% vom Projekt realisiert - ist halt ein Unterschied ob man einen ATMega oder einen PC vor sich hat - muss mich an die neuen Denkstrukturen erst gewöhnen.

... werde dann die Portkommunikation in eine schleife packen und bei bedarf die Variablen mit neuen Infos ver- und entsorgen - mal sehen ob ich dass heute hinbekomme 8)

Gruß Frank
Windows 7x64 Prof , PureBasic 5.20 LTS
heinz
Beiträge: 6
Registriert: 20.10.2009 11:41

Re: Procedure als eigenen Prozess parallel ausführen

Beitrag von heinz »

Hallo

Ich würde folgende Vorgehensweise vorschlagen:
- Keine Threads sondern Eventbasiert
- Eine Linked-List verwenden, in der die Sende- und Empfangskomandos eingetragen werden
- In der Eventloop das älteste Komando in der Linked-List ausführen
- Einfügen der periodischen Busabfragen mit Windowstimer in die Linked-List
elko68
Beiträge: 27
Registriert: 26.02.2010 14:50

Re: Procedure als eigenen Prozess parallel ausführen

Beitrag von elko68 »

Hallo,

Portkommunikation in eine schleife (Thread) packen und bei bedarf die Variablen mit neuen Infos ver- und entsorgen hat nicht den Erfolg gebracht.
Ich habe nun die Variante mit einem WindowsTimer verfeinert - der schaut Zyklisch nach ob was zu tun ist - das klappt sehr gut.

Gruß Frank
Windows 7x64 Prof , PureBasic 5.20 LTS
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
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: Procedure als eigenen Prozess parallel ausführen

Beitrag von NicTheQuick »

Wenn man sauber mit Threads kommunizieren will, bleibt einem eh nichts anderes übrig als Mutex und Semaphoren korrekt einzusetzen. Da steckt schon ein bisschen mehr dahinter als Werte in Variablen auszutauschen. In Zeiten der Multicores haben Variablen in verschiedenen Threads nämlich nicht zwangsweise den selben Wert, weil jeder Core seinen eigenen Cache hat. An diesen Stellen sind dann Mutexe wichtig.
Antworten