Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
Delphi XE2 Professional
|
Speicherleak in Multithradanwendung verhindern.
25. Jan 2009, 11:42
Hossa,
Ich bin gerade dabei mir eine Partikel Engine zu basteln.
Richtig Cool wird das natürlich erst wenn man die Berechnung der Partikelbahnen in einen Extra Thread auslagert, dachte ich mir.
Also habe ich mal angefangen und habe natürlich nun das Berühmte paralell ausführen Problem.
Worum es genau geht.
Ich habe in meiner Anwendung nun 2 Threads.
Die Hauptanwendung diese Füttert die Partikelengine mittels
AddPartikel
Immer Fleisig mit neuen Partikeln
Und Greift mittels
Render
auf diese zu.
Die Partikelengine ihrerseits
Berechnet die Flugbahnen der Partikel und Löscht diese wenn sie Negative Y-Werte Bekommen.
Mein Problem ist nun das
Hinzufügen und Löschen aus unterschiedlichen Threads geschieht, und damit Fehler auftreten. Wie man sehen Kann Geschieht dies allerdings nur wenn ich 10000 oder Mehr Partikel auf einmal hinzufüge.
Wie man im Auskommentierten Code sehen kann habe ich bereits mittels Synchronize bzw semaphore versucht das Problem zu verhindern. Nur Leider scheint mein Ansatz falsch zu sein.
Evtl könnt ihr mir ein wenig weiterhelfen.
|