AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread will nicht synchron schwimmen?

Ein Thema von Edlmann · begonnen am 28. Okt 2011 · letzter Beitrag vom 3. Nov 2011
 
grl

Registriert seit: 5. Feb 2007
174 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Thread will nicht synchron schwimmen?

  Alt 30. Okt 2011, 20:10
Ich verstehe nicht an welcher Stelle ich aus beiden Threads etwas zugreifen soll...Der VCL-Thread berechnet die Spiellogik, der Worker die Partikel-Engine (VCL-Thread greift nicht auf die Partikel zu), nur beim Rendern liest der VCl-Thread die Werte der Partikel aus, ändert diese aber nicht. Auf den Workerthread warten hab ich eingebaut, damit der Worker auf jeden Fall beim nächsten Frame fertig mit seinem Durchlauf ist, und wieder weiter arbeiten kann. Da der Mainthread im Spiel genug zu tun hat bis dahin, sollte diese Warteschleife im Spiel nur selten aufgerufen werden, doch das schützt (zumindest in meiner eigenen kleinen Welt, in der Threads funktionieren wie ich denke ) davor, dass Einzelschritte übersprungen werden beim Partikelsystem.
Der WorkerThread macht ein TParticleSystem(PSystem).Update; in dem z.B. ein Parts.Count und ein Parts.Items[x] vorkommt, und der MainThread macht ASystem.AddPartikels(OldX, OldY, Emit_SB.Position) das dazu führt, daß die Anzahl Parts sich ändert.

Das ist nur ein beispiel - und wegen dem Timer-Problem bist du evtl. noch im MainThread im Render (das auch ein Parts.Count verwendet) während der Timer schon den nächsten Thread angeworfen hat - dann krachts gleich wieder.

Gruß
Luggi
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz