Threaded App's

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

juse4pro

Betreff: Threaded App's

BeitragDi, Jun 23, 2009 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

woltle mich heute mal mit threaded applications auseinandersetzten, aber als ich in mein b max ordner geschaut habe, habe ich bemerkt, dass ich kein pub.thread modul habe, wo kriege ich das her?
Portfolio |LinkedIn |XING

BtbN

BeitragDi, Jun 23, 2009 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
BRL.Threads

juse4pro

BeitragDi, Jun 23, 2009 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
OH, sry, das ist ja im BRL ordner, ich dachte pub, wegen import: pun.thread....

danke Very Happy

noch ne frage:

obwohl ich jetzt diese beispiel mal gestestet angeguckt habe, funktioniert es nicht, habe auch die module ge"build"et

BlitzMax: [AUSKLAPPEN]
'Den Thread Mod mit Compilen
Import pub.thread

Graphics 640,480,32,60

'Einstellen und Starten der Threads
Load:TThread = TThread.Create( Laden )
show:TThread = TThread.Create( Anzeige )
Load.Run()
show.Run()

'Globalen zum übergeben der Daten an das Hauptprogramm
Global geladen:Byte=0

'ein Thread
'hier könnten zum Beispiel, Sounds, Grafiken, Texturen, Modells ... geladen werden
Function Laden(bb_func:Byte Ptr)
geladen=0
Repeat
Ladezeit:+1
Delay 1
Until Ladezeit=10000 ' 10 Sekunden
geladen=1
End Function

'noch ein Thread!
'dieser ist zur permanenten Anzeige,
'z.B. Animationen, die Geschichte wird erzählt,
'ein Video wird abgespielt ...
Function Anzeige(bb_func:Byte Ptr)
Local m
Local ladezeit=MilliSecs()
Repeat
Cls
m=m+1
SetRotation 0
DrawText "Ein schöner Ladebildschirm ist echt was kewles!",0,0
DrawText "Lädt seit: "+(Float(MilliSecs()-ladezeit)/1000.0)+"Sekunden",0,20
SetRotation m
DrawRect 320,240,100,10
DrawRect 320,240,-100,-10
Flip
Until geladen ' der Thread geht zuende, sobald der andere sagt, ich Bin ferit gmit laden.

End Function


'Hauptschleife:
Repeat

Delay 10
Until geladen'sie wartet acuh, bis die Threads fertig sind.

'und nun ab zum Game!
'game()


EDIT2:
und dann noch das:

Code: [AUSKLAPPEN]
Building Modules
Compiling:freeaudio.cpp
Build Error: failed to compile C:/Programme/BlitzMax/mod/pub.mod/freeaudio.mod/freeaudio.cpp
Process complete


was denn nu los?

hat schon 3mal funktioniert
Portfolio |LinkedIn |XING

amon

BeitragDi, Jun 23, 2009 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur zur Vollständigkeit - Du musst die Module zweimal erstellen, einmal mit der threaded und einmal normal

also "bmk makemods -a" und einmal "bmk makemods -a -h"

juse4pro

BeitragDi, Jun 23, 2009 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
oh, danke

soweit so gut, aber habe mir mal selbst ein beispiel angefertigt:
Code: [AUSKLAPPEN]

SuperStrict


Graphics 640,480,0,60

Local t1:TThread = CreateThread(laden_t, "wasn")

Global Ready:Byte
Global fps:TTimer =CreateTimer(60)


'laden
Function laden()
   Ready=0
   Print "BLAA!!!"
   Ready=1
End Function


'anzeige
Function laden_t:Object(data:Object)
   Local dir:Float
   Repeat
      dir=dir+Abs(Sin(MilliSecs()/32))*2
      DrawRect(320,240,50,10)
      WaitTimer(fps);Flip(0);Cls
   Until Ready
End Function



laden()


hier stürzt das ding einfach ab, es wird einmal BLAA!! geprintet, dann: Windows hat ein problem festgestellt, blala, kennt ihr ja Wink

why?


EDIT:

ok hab's, ich hab das return vergessen Wink

EDIT2:
aber es zeigt garnichts an, wieso? habe doch graphics und flip und cls
Portfolio |LinkedIn |XING

kog

BeitragDi, Jun 23, 2009 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeichnen kannst du soweit ich weiss, glaube ich nur im MainThread

BladeRunner

Moderator

BeitragDi, Jun 23, 2009 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop, die Module von BMax sind nicht Threadsafe, daher empfiehlt es sich alle erweiterten Sachen nur im MT zu machen. Ich habe allerdings keine Probleme damit gehabt Images in einem Thread zu laden und sie im Main rendern zu lassen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

BtbN

BeitragDi, Jun 23, 2009 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst Pixmaps in einem anderen Thread laden und an den MainThread geben, aber images nicht, da sie eine Textur erzeugen, und der kontext nur im MainThread existiert.

BladeRunner

Moderator

BeitragDi, Jun 23, 2009 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Da muss ich widersprechen, btbn, ich hatte es zwar erst mit Pixmaps gemacht, aber es hat auch mit Timage ohne jedes Problem funktioniert.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

BtbN

BeitragDi, Jun 23, 2009 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann wird er intern gemerkt haben, dass die Texur ungültig/noch nicht geladen ist. Aber OpenGL-Technisch ist es nicht möglich, nur durch irgendwelche basteleien in Max2D.

juse4pro

BeitragDi, Jun 23, 2009 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habe jetzt mein MainThread, der lädt in globale variablen, und ich habe einen thread, welcher ne animation abspielt (mit Max2D: skalieren alpha, usw) und es funktioniert

danke leute Wink

keine doofen lade-hänger mehr

allerding gibt es einen compile error, wenn ich das in mein extra-ladeBILDSCHIRM-thread einfüge:
Code: [AUSKLAPPEN]
   Local 4sev_over:Int=MilliSecs()+4000


der compiler sagte, es müsse eine variable vom typ integer-literal sein, was bedeutet das?

EDIT: ok hab hinbekommen, ich hatte ne zahl in der variable, um genau zu sein sogar am anfang, und das geht nicht, danke nochmal für eure hilfe...
Portfolio |LinkedIn |XING

BtbN

BeitragDi, Jun 23, 2009 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hoffe, du sicherst alle geteilten resourcen mit nem Mutex ab? Sonst fliegt dir das ganze schneller um die Ohren, als du gucken kannst.

Der Eisvogel

BeitragDi, Jun 23, 2009 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir gibt es das Modul iwi garnicht. Muss ich mir das runterladen?
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

BladeRunner

Moderator

BeitragDi, Jun 23, 2009 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
BRL.Threads sollte seit 1.32 dabei sein, wenn ich nicht irre.
Vielleicht mal Zeit deine Installation auf den neusten Stand zu bringen Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Der Eisvogel

BeitragDi, Jun 23, 2009 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh stimmt, habe noch 1.30.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group