Aktuelle Zeit: 22.10.2020 23:10

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 32 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 21.02.2006 22:31 
Offline
Benutzeravatar

Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg
Hö? O_o
So weit ich weis laufen doch alle Anwendungen mit einem Delay, wenn
diese nichts zu tun haben.
In der Mainloop steht doch meist immer so was:
Code:
Select WindowEvent()
  Case #PB_Event_Gadget
    ; Code
  ;Case weitere Events
  Default
    Delay(10)
EndSelect

Ist nichts zu tun wird durch das Delay(10) die CPU mitgeteilt, das es
andere Dinge verarbeiten soll und so bleibt die Auslastung bei >= 1%.
Ich kenn bis her überhaupt keine andere Möglichkeit O_o ...

Windows muss ja trotzdem das Fenster weiter aktualisieren bzw zeichnen,
da hier aber nichts Animiert ist muss es nicht dauernt komplet neu
gezeichnet werden, wie Windows das aber intern macht weis ich nicht. Bei
der CWL ist das anders, da hier Animationen jederzeit geschehen können
muss das Fenster immer wieder gezeichnet, aber wenn nichts zu tun ist
reicht meist eine FPS von >= 10, was im Entefekt wieder eine sehr
geringe Auslastung ergibt. Sind Framewecksel von mehr als 10 pro
Sekunde erwünscht, muss die FPS natürlich höher sein, damit diese auch
rukelfrei angezeigt werden können.

Bei Spielen ist das anders, diese Arbeiten so wie die CWL, zeichnen also
das Bild bei jedem Loop neu. Spiele haben aber keine "Delay"-Bremse, da
diese zu 99% so wie so die vollen Systemressorcen brauchen um flüssig
zu laufen und auch das einzige sind, was die CPU beansprucht.

Also Entweder ich hab dich jetzt falsch verstanden, dann öhm ... ja -.- .
noch mal bitte für mich :D ... oder ich hoffe ich hab dir das system
erfolgreich näher bringen können :)

MFG PMV

_________________
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 21.02.2006 22:53 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Anwendungen arbeiten grundsätzlich mit WaitWindowEvent und nicht mit
WindowEvent. Hierfür ist es eben erforderlich, das du alles andere in
Callbacks, TimerCallbacks oder Threads verpackst.

Wenn das mit Deiner Lib erzeugte Fenster nicht den Fokus hat, so sollte die
erzeugte CPU-Last bei 0% liegen, weil es ja nichts zu tun hat. Ansonsten
klaut es den anderen Programmen, die die gerade den Fokus haben die
Resourcen und das ist nicht Chic :mrgreen:

WindowEvent ist ja mehr für Einsteiger in PB, weil die eben mit Callbacks
usw. nicht so firm sind. Das ist aber für normalle Anwendungen absolut
ungeeignet!

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 09:21 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Trotzdem ist das WindowEvent() falsch!
Du solltest nur verzögern, wenn die ganze Event-Schlange leer ist, also:
Code:
Select WindowEvent()
  Case #PB_Event_Gadget
    ; Code
  ;Case weitere Events
  Case 0
    Delay(1)
EndSelect


und eine ms Delay langt auch vollkommen.

Auch sehe ich keinen Grund, warum ein WindowEvent() absolut ungeeignet sein soll (wenn richtig angewendet).

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 13:34 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
HeX0R hat geschrieben:
T
Auch sehe ich keinen Grund, warum ein WindowEvent() absolut ungeeignet sein soll (wenn richtig angewendet).

Welches Delay ist denn das richtige? 0 oder 1 oder doch 10

Nein, das Zeichnen sollte er ins #WM_PAINT ereignis oder ähnlich packen, im
Callback. Immer wiederkehrende Aktionen mit einem TimerCallback steuern
usw.

Ansonsten ist die CPU Last unnötig hoch, bei zu grossem Delay werden
Ereignisse verschluckt usw. Richtige Anwendung von WindowEvent() ist, es
nicht anzuwenden. Viele Progamme schließe ich nicht, minimiere sie nur, da
erwarte ich, das diese lediglich RAM verbrauchen, aber die CPU unbelastet
bleibt, dies ist nur mit WaitWindowEvent() möglich.

Hab aber jetzt keinen Bock auf irgendwelche Delay-Diskussionen, wer's
nicht anders kann oder will, solls halt machen.

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 13:57 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Dann bin ich ja mal gespannt auf ein Game von dir in PB im WindowedScreen nur unter Verwendung von WaitWindowEvent() ...

Und ums gleich vorwegzunehmen:
Du sagtest WindowEvent() sei IMMER schlecht! Da stand nix von wegen : Nur in Applikationen (was bei manchen Netzwerkapplikationen und/oder hardwarenahen IO-Applikationen übrigens auch falsch ist).

Aber nun gut, man beachte deine Signatur... :mrgreen:

und über das Delay wollte ich nie diskutieren...

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 14:01 
Offline
Benutzeravatar

Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg
Ja stimmt Hexor, hast recht ... war ja nur schnell hingeschrieben /:->

@ts-soft
Aber an WaitWindowsEvent() hab ich jetzt garnicht mehr gedacht :? ...
hast vollkommen recht -.- . Aber um das selbe system wie bei
WaitWindowEvent() einsetzten zu können wüsst ich erlich gesagt erst mal
gerne, was dieses "Wait" intern bedeutet. Also was der unterschied
zwischen WindowEvent() und WaitWindowEvent() ist. Fals einer von euch
mir das beantworten kann, wäre das eine sehr große hilfe. Sonnst muss
ich wohl mal versuchen von Fred eine Antwort zu bekommen, und das mit
meinem fast nichtvorhandenen Englischkenntnissen ^_^

Dann kann ich nämlich anfangen mir entsprechende Lösungen für meine
Lib zu überlegen. :D

Wobei das ganze ja in erster Linie für Spiele gedacht ist/war, was das
System erklärt. Das ich es auch für normale Windows-Fenster nutzbar
mache ist mehr oder weniger ein Zufall :lol:. Aber wie auch immer, bis
her werden die EventQueue der Windows-Fenster und die EventQueue der
CWL unabhängig von einander in der Mainloop abgefragt, bei
Fullscreenanwendungen fällt die Windows-EventQueue ja ganz weg. Aber
wenn ich weis wie WaitWindowEvent() unter PB funktioniert kann ich nen
weiteres System speziell für Anwendungen entwickeln. Bis her
unterscheidet die CWL ja nur zwischen Screen und Fenster durch die
unterschiedlichen Grafiktypen (Sprite, bzw Image), mit Threads könnte ich
dank der PB4.0 ja auch ohne reue dann Arbeiten, fals ich es für
angebracht halten werde :D.

Aktuell werden Fenster, die minimiert oder unsichtbar sind nicht neu
gezeichnet, durch ein entsprechendes, z.B. Delay(100) wäre also
gegeben, das hier keine unnötigen Ressorce verbraucht werden. Aber
natürlich nicht das wahre /:-> ...

MFG PMV

_________________
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 14:07 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
@Hexor
Ich meinte nur richtige Applikationen (auch Netzwerkanwendungen)

Den Kompromiss zwischen verlorengehender Ereignisse und CPU last ist nur in (Fullscreen-)Spielen akzeptabel (ich Spiele sowieso fast nie :mrgreen: ), diese verwenden ja sowieso meist keine WindowEvents.

@PMV
WaitWindowsEvent leitet die Ereignisse weiter. Alles was nicht in Deinem MainLoop verwendet wird, wird nicht beachtet und weitergeleitet. Landet also in den entsprechenden Callbacks. Ohne WaitWindowEvent würden diese auch nicht funktionieren.
Ob das jetzt so ganz richtig ist :freak: , aber sinngemäß.

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 14:21 
Offline
Benutzeravatar

Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg
Das was du geschrieben hast, lass ich jetzt mal unkommentiert, weil ichs
ja selber nur vermuten kann ... /:->

Aber wie bewerkstelligt WaitWindowEvent() denn das warten? Da müsste
doch auch so was wie ein Delay() eingebaut sein, oder nicht?

_________________
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 14:29 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
PMV hat geschrieben:
Aber wie bewerkstelligt WaitWindowEvent() denn das warten? Da müsste
doch auch so was wie ein Delay() eingebaut sein, oder nicht?

Wie :freak: aber auf jedenfall ohne Delay oder Sleep.

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 22.02.2006 14:30 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Hmm... das würde ich jetzt aber gerne genauer wissen

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 32 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye