Prozeduren paralell ablaufen lassen - ohne threads
Prozeduren paralell ablaufen lassen - ohne threads
Wie kann ich Prozeduren paralell ablaufen lassen - ohne Threads. (ich brauche nämlich die Rückgabewerte (strings) der Prozeduren.)?
MfG Tompazi
MfG Tompazi
- Josef Sniatecki
- Beiträge: 657
- Registriert: 02.06.2008 21:29
- Kontaktdaten:
Leider ist das wirklich fast unmöglich die Prozeduren so aufzubauen, dass
sie parallel ablaufen. Du sagst, du möchtest dies wegen der
Rückgabewerte: Nun, dann würde ich dir globale Variablen
empfehlen.
Beispiel:
Ich hoffe ich konnte dir damit helfen
sie parallel ablaufen. Du sagst, du möchtest dies wegen der
Rückgabewerte: Nun, dann würde ich dir globale Variablen
empfehlen.
Beispiel:
Code: Alles auswählen
Procedure.l A(Dummy.l)
...
GlobalString1="A finished"
EndProcedure
Procedure.l B(Dummy.l)
...
GlobalString2="B finished"
EndProcedure
A=CreateThread(@A(),0)
B=CreateThread(@B(),0)
WaitThread(A)
WaitThread(B)
String1$=GlobalString1
String2$=GlobalString2
PB 4.61 | Windows Vista - 32Bit
Homepage
"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Homepage
"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
die frage ist dabei ob du aus den beiden Proceduren die "parallel laufen sollen, vllt nicht eine machen kannst, in der dann dein zeug "gleichzeitig" bearbeitet werden kann.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- 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
danke gute Idee
Hab ich da was falsch verstanden?
Hab ich da was falsch verstanden?
Code: Alles auswählen
Global global1, global2
Procedure Proc1()
Repeat
global1 + 1
Until global1 = 10
EndProcedure
Procedure Proc2()
Repeat
global2 + 1
Until global2 = 15
EndProcedure
CreateThread(@Proc1(),0)
CreateThread(@Proc2(),0)
MessageRequester("out","Should be 10: " + Str(global1) + " Should be 15: " + Str(global2))
End
jo ...
nach dem die Thread gestartet wurden kommt ja SOFORT das MessageRequester
die Schleien in den proceduren werden fast garnicht bearbeitet...
ein Delay(10) dazwischen sollte schon helfen oder ein WaitThread
EDIT: und die Proceduren brauchen noch ein Parameter
nach dem die Thread gestartet wurden kommt ja SOFORT das MessageRequester
die Schleien in den proceduren werden fast garnicht bearbeitet...
ein Delay(10) dazwischen sollte schon helfen oder ein WaitThread
EDIT: und die Proceduren brauchen noch ein Parameter
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
bei CreateThread(@Proc1(),0)
übergibst du doch einen Parameterwert, hier 0
dieser muss auch in der Procedure "aufgenommen" werden, ist ja egal ob du ihn brauchst oder nicht !
also:
übergibst du doch einen Parameterwert, hier 0
dieser muss auch in der Procedure "aufgenommen" werden, ist ja egal ob du ihn brauchst oder nicht !
also:
Code: Alles auswählen
Procedure Proc1(Irgendwas)
Repeat
global1 + 1
Until global1 = 10
EndProcedure
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 630
- Registriert: 05.05.2005 19:06
Ich bin mir jetzt nicht sicher, aber ich glaube es ist so: Du kannst Threads ohne Parameter starten, empfohlen ist aber mit Parameter. Zum Beispiel ein Dummy-Parameter:Tompazi hat geschrieben:oh. eh logisch
??STARGÅTE hat geschrieben: EDIT: und die Proceduren brauchen noch ein Parameter
Procedure Thread(dummy)
...
EndProcedure
CreateThread(@Thread(), 1)
Oder was weiss ich für ein Wert. Ist glaub sicherer. Aber keine Ahnung ob das genau so stimmt
Gruss
PMTheQuick
