Thread oder Prozess im einer anderen EXE?
Thread oder Prozess im einer anderen EXE?
Hallo, guten Tag.
Was ist der Vorteil/Nachteil bitte von einem Thread oder einem Process in einer anderen EXE die mit Sendmessage und Filemap gesteuert wird vom Hauptprogramm ?
Danke.
Gruss
Was ist der Vorteil/Nachteil bitte von einem Thread oder einem Process in einer anderen EXE die mit Sendmessage und Filemap gesteuert wird vom Hauptprogramm ?
Danke.
Gruss
Re: Thread oder Prozess im einer anderen EXE?
Ich verstehe leider die Frage nicht.
Ein Thread ist ein Teil eines Prozesses und ein Prozess ist die komplette Anwendung bzw. die EXE-Datei.
Ich kann dir nur die Vor- und Nachteile eines Threads nennen:
Vorteil: Läuft unabhängig
Nachteil: Läuft langsamer
Ein Thread ist ein Teil eines Prozesses und ein Prozess ist die komplette Anwendung bzw. die EXE-Datei.
Ich kann dir nur die Vor- und Nachteile eines Threads nennen:
Vorteil: Läuft unabhängig
Nachteil: Läuft langsamer
Re: Thread oder Prozess im einer anderen EXE?
Ich denke, er will die Vorteile / Nachteile zwischen folgenden Methoden wissen:
Methode 1
Methode 2
Hauptprogramm:Nebenprogramm (Program2.exe):
Methode 1
Code: Alles auswählen
Procedure Thread(*Parameter)
; Code
EndProcedure
CreateThread(@Thread(), 0)Hauptprogramm:
Code: Alles auswählen
RunProgram("Programm2.exe")
; ...
SetFileMapData(...)
SendMessage_(WindowHandleFromProgram2Window, Message, ...)Code: Alles auswählen
Procedure Callback(hWnd, uMsg, wParam, lParam)
If uMsg = #MyMessage
; FileMap lesen, die vom Hauptprogramm mit Daten gefüllt wurde
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
; ...
SetWindowCallback(@Callback())
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Re: Thread oder Prozess im einer anderen EXE?
Ja danke, so meine ich es.
Habe mich wohl nicht so richtig ausgedrückt.
Danke.
Gruss
Habe mich wohl nicht so richtig ausgedrückt.
Danke.
Gruss
Re: Thread oder Prozess im einer anderen EXE?
Ich würde grundsätzlich alles in einer Anwendung machen. Wenn du wiederverwendbare Funktionen für mehrere Programme bereitstellen möchtest, kannst du diese in einer DLL- oder Anwendungsdatei einfügen.
Du kannst diese natürlich auch in einer Include-Datei einfügen, die von mehreren, verschiedenen Quellcodes/Projekten verwendet werden können.
Es kommt immer darauf an, was du machen möchtest. Was möchtest du denn genau machen bzw. was macht deine Anwendung genau?
Du kannst diese natürlich auch in einer Include-Datei einfügen, die von mehreren, verschiedenen Quellcodes/Projekten verwendet werden können.
Es kommt immer darauf an, was du machen möchtest. Was möchtest du denn genau machen bzw. was macht deine Anwendung genau?
Re: Thread oder Prozess im einer anderen EXE?
Ich möchte in einem Programm den Roboter steuern mit/über Wlan und dort auch Grafisch die Daten darstellen.
Der Input zum Steuern des Roboter soll vom Hauptprogramm kommen, welches auch noch serielle Daten empfangen soll.
Das steuern des Roboter mache ich mit Sendmessage vom Hauptprogramm.
Das Hauptprogramm soll mit dem Wlan außen vor gelassen werden, weil Wlan doch sehr Zeitintensive ist.
Darum wollte ich es trennen, weil die Wlan-Daten ca 100 ms dauern pro Ultraschallmessung des Roboters.
Gruss
Der Input zum Steuern des Roboter soll vom Hauptprogramm kommen, welches auch noch serielle Daten empfangen soll.
Das steuern des Roboter mache ich mit Sendmessage vom Hauptprogramm.
Das Hauptprogramm soll mit dem Wlan außen vor gelassen werden, weil Wlan doch sehr Zeitintensive ist.
Darum wollte ich es trennen, weil die Wlan-Daten ca 100 ms dauern pro Ultraschallmessung des Roboters.
Gruss
Re: Thread oder Prozess im einer anderen EXE?
Ich würde das in einem Programm machen und nicht getrennt. Du hast ja z.B. mit Threads die Möglichkeit, mehrere Vorgänge gleichzeitig laufen zu lassen.
Außerdem ist es für dich einfacher, auf die empfangenen Daten u.ä. zuzugreifen.
Außerdem ist es für dich einfacher, auf die empfangenen Daten u.ä. zuzugreifen.
Re: Thread oder Prozess im einer anderen EXE?
In dem Fall wäre ein Thread mit einer Warteschlange am besten. Das Hauptprogramm kann flüssig weiter bedient werden, während sich der Thread um die träge Verarbeitung der Aufgaben kümmert.
So in etwa:
Edit [19:04]: Code wurde verbessert.
So in etwa:
Code: Alles auswählen
Structure QueueStruc
Command.i
Parameter1.i ; z. B. die Zeit, wie lange der Befehl ausgeführt werden soll
Parameter2.i
Parameter3.i
Parameter4.i
; ...
EndStructure
Structure ThreadDataStruc
List Queue.QueueStruc()
ExitThread.i
EndStructure
Enumeration Command
#Robot_Move_Forward
#Robot_Move_Backward
; ...
EndEnumeration
Procedure Thread(*void)
Shared Mutex, ThreadData
Repeat
ForEach ThreadData\Queue()
If LockMutex(Mutex)
Select Command
Case #Robot_Move_Forward
; Aufgabe ausführen
Case #Robot_Move_Backward
; Aufgabe ausführen
EndSelect
UnlockMutex(Mutex)
EndIf
Next
Until ThreadData\ExitThread
EndProcedure
Procedure AddToQueue(Command, Parameter1=0, Parameter2=0, Parameter3=0, Parameter4=0)
Shared Mutex, ThreadData
If LockMutex(Mutex) And AddElement(ThreadData\Queue())
With ThreadData\Queue()
\Command = Command
\Parameter1 = Parameter1
\Parameter2 = Parameter2
\Parameter3 = Parameter3
\Parameter4 = Parameter4
EndWith
EndIf
EndProcedure
Define.ThreadDataStruc ThreadData
Define Mutex = CreateMutex()
Define Thread = CreateThread(@Thread(), 0)
OpenWindow(...)
; ...
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget And EventGadget() = #Button_Robot_Move_Forward
AddToQueue(#Robot_Move_Forward)
Debug "'Roboter nach vorne bewegen' wurde zur Warteschlange hinzugefügt!"
EndIf
Until Event = #PB_Event_CloseWindow
Debug "Warten wir noch bis die Warteschlange sauber abgebrochen wurde..."
ThreadData\ExitThread = #True
WaitThread(Thread)
Debug "Ok, Programm wird beendet!"
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Re: Thread oder Prozess im einer anderen EXE?
Ja danke für die große Hilfe.
Werden mich noch einmal mit den Threads auseinandersetzen.
Gruss
Werden mich noch einmal mit den Threads auseinandersetzen.
Gruss

