Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
hallöchen allerseits,
wie steht es eigentlich mit multithreading und compilierten Listen? Nehmen wir mal folgendes Beispiel (ist nicht sehr sinnvoll aber es zeigt das Prinzip): Eine Shell der Größe (byte,byte) generiert eine Liste (byte*byte*byte) und fügt für jede Position alle Characters hinzu. Diese ruft man dann wie folgt auf:
Code:
public static void DrawText(this string self, byte posx, byte posy)
Äh... Jain, wahrscheinlich macht es Probleme. Das Parallel.For hat folgende Wahl: * Im Aufrufenden Thread wird die Schleife komplett abgearbeitet, z.B. Schleife hat wenige Elemente und ist schnell abgearbeitet. Das ist prima, denn an deinen Thread hast Du wahrscheinlich auch den gl-Context gebunden. (vermutlich hast Du das in deinen Tests beobachtet.) * Die Schleife wird auf verschiedene Threads verteilt; das ist schlecht: Du kennst die Threads nicht und es gibt keine Abmachung welche Threads Teile der Schleife abarbeiten - der gl-Context wird nicht gebunden sein, der gl-Aufruf geht im besten Fall ins Leere. (mach mal ein sleep in den delegate )
Ich würde OpenGl Aufrufe nicht parallel abarbeiten. Die Grafikschnittstelle gibt es ja nur einmal und das Rastern als solches ist für den Treiber gut parallelisierbar und passiert transparent, du brauchst dich also normalerweise gar nicht darum zu kümmern. Ein Thread für alles was OpenGl betrifft sollte genügen.
Wo sich Parallelität dagegen lohnt ist wenn du diesem Opengl-Thread zuarbeiten kannst - irgendwelche preprocessing Tasks an den Modellen (gebastel an Modellen für Animationen, Erzeugung von Modelldaten, etc.), dynamiche Texturerstellung, Physik, Soundeffekte, usw. Eigentlich alles was Du auf deinen Daten tun musst und kannst, bevor etwas gerendert wird und gleichzeitig passieren kann.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.