Deutsch
Forum

Thread-Returnwert

 

p.specht
Thread- nProcs können am Ende einen Return-Wert liefern. Mir ist bloß nicht klar, wie man den im Hauptprogramm ausliest. Gibt es da eine einfache Möglichkeit?

Demo mit 3 gesteuerten Threads:
 {$cleqt}
Windowstyle 24
cls rgb(255,200,200)
var edit& =@Create("Edit",%Hwnd,"1",40,20, 140,20)
var edit2&=@Create("Edit",%Hwnd,"2",40,50, 140,20)
var edit3&=@Create("Edit",%Hwnd,"3",40,80, 140,20)
var thread& =thread.start(procaddr(meinThread), edit&, "1000")
var thread2&=thread.start(procaddr(meinZweiterThread), edit2&, "2000")
var thread3&=thread.start(procaddr(meinDritterThread), edit3&, "3000")
var n&=0
font 2
locate 15,1
Print " Theads werden der Reihe nach beendet mittels ESC-Taste!"
Print "\n Hauptprogramm nun in Hauptschleife!"

repeat

    locate 23,23:print n&:inc n&
    WindowTitle str$(n&)
    waitinput 100

until (%key=27) or (%key=2)

print "\n Hauptschleife wurde verlassen."
waitinput 1500
thread.stop(thread&)

while thread.is(thread&)

endwhile

thread.close(thread&)
print "\n Habe Thread Nr. 1 beendet."
waitinput 1500
thread.stop(thread2&)

while thread.is(thread2&)

endwhile

thread.close(thread2&)
print " Habe Thread Nr. 2 beendet."
waitinput 1500
thread.stop(thread3&)

while thread.is(thread3&)

endwhile

thread.close(thread3&)
print " Habe Thread Nr. 3 beendet."
waitinput 1500
beep
print "\n Hier Hauptprogramm: Isch 'abe feddisch... BYEBYE!"
waitinput 3000
END

nproc meinThread :parameters thread&,dataLong&,dataString$

    whilenot thread.message(thread&)==wm_close

        settext(dataLong&,"["+time$(0)+"."+substr$(time$(1),1,".")+"]")
        sleep(1000)

    endwhile

    return 0

endproc

nproc meinZweiterThread :parameters thread2&,dataLong2&,dataString2$

    whilenot thread.message(thread2&)==wm_close

        settext(dataLong2&, "("+time$(1)+"."+substr$(time$(0),1,".")+")")
        sleep(1333)

    endwhile

    return 0

endproc

nproc meinDritterThread :parameters thread3&,dataLong3&,dataString3$

    whilenot thread.message(thread3&)==wm_close

        settext(dataLong3&, "{"+time$(0)+"."+substr$(time$(1),1,".")+"}")
        sleep(3000)

    endwhile

    return 0

endproc

 
XProfan 11
So Computer sind halt auch nur Menschen...
25.11.2018  
 




p.specht
Offenbar gibt es eine Variante von Thread.Message auch im Hauptprogramm bzw. im Eltern-Prozess. Muss nur erst draufkommen, wie man das genau abfrägt.
Hat das schon jemand geschafft?
 
So Computer sind halt auch nur Menschen...
26.11.2018  
 



Wenn ich mich recht erinnere, dann ist thread& ein 44 Byte großer Speicher -

die Werte nach thread.message() für wParam, lParam stehen in thread& an Offset 24, 28 und 32 aber erst wenn die Funktion thread.message verwendet wurde. Vorher stehen diese 3 Werte an den Pos. 12, 16, 20.

Für geordnete Kommunikation mit der Hauptschleife vlt. am Besten Win32 SendMessage verwenden.

Nun bin ich mir dennoch nicht sicher, ob ich damit geholfen habe.
 
27.11.2018  
 




p.specht
Danke iF, werd´s versuchen ...
 
XProfan 11
So Computer sind halt auch nur Menschen...
27.11.2018  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.081 Betrachtungen

Unbenanntvor 0 min.
p.specht23.05.2020
Stefan8102.01.2020
RAW22.07.2019
Pedro Miguel26.05.2019
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

p.specht (3x)
iF (1x)


AGB  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Impressum  |  Mart  |  Support  |  Suche

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie