Italia
Foro

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
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
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?
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
26.11.2018  
 



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

die Werte nach thread.message() per 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
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
27.11.2018  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.623 Views

Untitledvor 0 min.
Normann Strübli05.02.2023
funkheld04.01.2022
p.specht27.11.2021
Ernst21.07.2021
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

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


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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