Deutsch
Forum

Mehr als 4 Threads

 

Jac
de
Lad
Hallo,

ich finde die Thread.pcu klasse. Aber gibt es eine Möglichkeit mehr als 4 Threads gleichzeitig zu benutzen? Das bräuchte ich unbedingt!!!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
25.10.2005  
 




Frank
Abbing
Ich glaube, dass Profan diese Grenze setzt. Bin aber nicht ganz sicher...
 
25.10.2005  
 



Jain. Die Thread.Pcu tut nur so als ob es Threating wäre. Sonst gäbs ne Menge Nachteile. Mit der Thread.Pcu gibts aber nur 4 Stränge - da lässt sich auch nix regeln.

Echte Threads jedoch kann Du soviele erzeugen wie Dein System erlaubt.

Nur sage mir bitte - wofür mehr als 4?
 
25.10.2005  
 




Jac
de
Lad
Hallöle,

ich möchte ein Spiel programmieren und benötige mehrere Threads, um die Musik, Geräusche, Cursor etc zu steuern. Da brauche ich mehr als 4 Threads...

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
26.10.2005  
 




Frank
Abbing
Hi,

in der Regel verringert jeder weitere Thread die Geschwindigkeit des Hauptprogramms...
 
26.10.2005  
 



@Frank: Richtig.

@Jac: Musik, Geräusche => ein thread
Cursor etc zu steuern => Über einen Keyboardhook - also kein Thread.

Selbst Doom kommt mit 4 Threads aus - benötigt aba 6 im Multiplayermodus.

Deshalb sage ich einfach die von Dir gewählte Herangehensweise ist zu überdenken.

Ich kann die Anzahl auch nicht erhöhen - so gern ichs tuen würde.

Salve.
 
27.10.2005  
 




Jac
de
Lad
Hmmm...

erstmal ne Frage: Was ist ein Hook?

Und wie, wenn ich mal fragen darf, funktioniert die thread.pcu eigentlich intern? Ich habe momentan gar keine Vorstellung davon...

Ich überdenke das mit meinem Spiel nochmal, und wenn es irgendwann mal Gestalt annimmt seid ihr die ersten, die es zu Gesicht bekommen!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
28.10.2005  
 



Die Thread.Pcu ist ein relativ komplexes Gebilde auf Grundlage der Timer-APIs. Hier werden Prozeduradressen an Apis übergeben - und gleichzeit wird aufgepasst das nix überläuft (prozedurstack). Eigendlich lächerlich - aber in seiner aktuellen Form durch seine einfache Anwendungsmöglichkeit unheimlich hilfreich.

Was hooks sind:  [...] 

Hier ein kleines Sample:
KompilierenMarkierenSeparieren
 {$Cleq}
Set("FastMode",1)
Def Cnhex(4) !"user32","CallNextHookEx"
Def Swhex(4) !"user32","SetWindowsHookExA"
Def Gwtpid(2) !"user32","GetWindowThreadProcessId"
Declare Hkbdhook&
cls
Hkbdhook& = Swhex(2,Procaddr(Kbproc, 3), 0,Gwtpid(%hwnd, 0))

while 1

    getmessage

wend

End

Proc Kbproc

    Parameters Ncode&, Wparam&, Lparam&
    Declare Bval&

    If Wparam& = 13

        If Lparam& < 0

        Endif

        Bval&:=1

    Elseif Wparam& ==40 down

        If Lparam& > 0

        Endif

        Bval&:=1

    Elseif Wparam& ==38 up

        If Lparam& > 0

        Endif

        Bval&:=1

    Elseif Wparam& = 222Ä

        If Lparam& < 0

        Endif

        Bval& = 1

    Elseif Wparam& = 192Ö

        If Lparam& < 0

        Endif

        Bval& = 1

    Elseif Wparam& = 186Ü

        If Lparam& < 0

        Endif

        Bval& = 1

    Elseif Wparam& = 219ß

        If Lparam& < 0

        Endif

        Bval& = 1

    Else

        Cnhex(Hkbdhook&, Ncode&, Wparam&, Lparam&)
        Bval& = 0

    Endif

    Return Bval&

Endproc

Salve, iF
 
28.10.2005  
 




Jac
de
Lad
Aha...hm, aber wie ist es möglich gleichzeitig eine Musik zu spielen, Hintergrundgeräusche einzumischen, einen animierten Mauscursor bewegen zu lassen, Wasser zu animieren...? Irgendwie hab ich da noch n Denkhänger...

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
28.10.2005  
 



[quote:a113f08e31=Jacob Liebeck]Aha...hm, aber wie ist es möglich gleichzeitig eine Musik zu spielen, Hintergrundgeräusche einzumischen, einen animierten Mauscursor bewegen zu lassen, Wasser zu animieren...? Irgendwie hab ich da noch n Denkhänger...

Jac[/quote:a113f08e31]Dafür gibt es API und DirectX-Funktionen. Jedenfalls für Musik.. Oder die ProSpeed.dll. Für den Rest stehen Dir bis zu 16 Timer zur Verfügung, wobei Highrestimer in Spielen vorzuziehen sind. Auch da hilft Dir die API weiter.
 
28.10.2005  
 




Jac
de
Lad
Wie kann ich denn 16 Timer verwenden???
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
29.10.2005  
 



[quote:ac5601579e=Jacob Liebeck]Wie kann ich denn 16 Timer verwenden???[/quote:ac5601579e]
siehe:  [...] 
Für die Timer kannste ~wm_timer auswerten, oder eine TimerProc übergeben, wobei dies allerdings XProfan erfordert. Für ~wm_timer empfiehlt sich natürlich auch ein Callback.
PS: Für API-Timer ist ein Fenster erforderlich, das aber nicht unbedingt sichtbar sein muß

Simples sinnloses Beispiel für 2 Timer:
KompilierenMarkierenSeparieren
Def W32settimer(4) !"USER32.DLL", "SetTimer"
Def W32killtimer(2) !"USER32.DLL", "KillTimer"

Proc Mytimer1

    Print "Timer 1"

Endproc

Proc Mytimer2

    Print "Timer 2"

Endproc

Cls
W32settimer(%Hwnd, 0, 500, Procaddr("MyTimer1", 0))
W32settimer(%Hwnd, 1, 5050, Procaddr("MyTimer2", 0))
Waitinput
W32killtimer(%Hwnd, 0)
W32killtimer(%Hwnd, 1)
Viel Spaß

//Edit: Hab den Code nochmal korrigiert
 
29.10.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.238 Betrachtungen

Unbenanntvor 0 min.
E.T.26.12.2018
Peter Max Müller06.10.2014

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

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