Reflection und Multithreading

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Antworten
Punika
Beiträge: 29
Registriert: 25.02.2002, 15:12
Echter Name: Lutz Hören
Kontaktdaten:

Reflection und Multithreading

Beitrag von Punika »

Hallo zusammen

ich hoffe das Thema ist diskutierbar.
Es geht um großen und ganzen um das Konzept einer Basis Klasse, meistens "Object" genannt, die Reflection in C++ implementiert hat. Da ich immer darauf aus bin, Multi Threading zu vereinfachen. Versuche ich so gut wie möglich eigenständige Systeme aufzubauen. Das funktioniert im höheren Bereich (Grafik, Physik usw...) auch schon gut. Nur habe ich noch dieses alte Konzept bei mir drin.

Ich weiß das hier wohl viele Leute keine Fans davon sind. Ich kann die Argumente in der Regel auch nachvollziehen. Ich wollte hier aber keine Diskussion über IsA oder sonstige Funktionen los treten.

Mir geht es eher um andere Funktionen:

- Laden von Klassen aus Libraries (DLL, so...). Damit meine ich, das ich kann Interface für sowas schreiben muss. Ich brauche den Namen einer Klasse und wo sie sich befindet. Mit Hilfe dieser Klasse kann ich dann, das Objekt erstellen.
- Den Verzicht auf Manager, Objekte verwalten sich selber in einer Größen Liste. (Hash basierter Zugriff)
- Einfache Serialisierung von Klassen. Hauptpunkt ist da, eher das Laden/Speichern von Referenzen.
- Textueller Zugriff auf Variablen.

Punkt 1 und Punkt 2 sind im Endeffekt eher das Problem beim Multi Threading. Der Zugriff ist dort immer Global und kann mit anderen collidieren.
Was mich einfach im Moment interessiert, ist inwieweit man heutzutage so Anforderungen unter Multi Threading realisiert. Gibt es da neuere Techniken? Kann man einzelne Punkte anders implementieren?

Grüße

punika
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Reflection und Multithreading

Beitrag von dot »

Mir ist völlig unklar, was da deiner Meinung nach genau die Probleme sein sollen. Musst du eben synchronisieren?
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Reflection und Multithreading

Beitrag von CodingCat »

Ich sehe das Problem auch noch nicht.

Zu Punkt 1: Objekte zu erzeugen sollte im Allgemeinen ja keine Nebenwirkungen auf andere Objekte haben, inwiefern besteht hier ein Problem mit Threading?

Zu Punkt 2: Ich würde vermuten, dass die Zahl der Anwendungsfälle, in denen ständig gänzlich unbekannte Objekte via Reflection erzeugt werden müssen, sehr gering ist. In diesem Fall tun es einfache kritische Bereiche in der jeweiligen Liste. Tatsächlich ist die Liste, die du beschreibst, ja genau ein globaler Manager. Für Fälle, in denen nebenläufig sehr viele unbekannte Objekte erzeugt und verwaltet werden müssen, musst du genau von diesem Manager-Muster abweichen. Hierzu wäre das Einfachste, jedem Thread ein eigenes Objekt einer entsprechenden Manager-Klasse zu geben (Ironie, damit durchbrichst du das gemeinhin geächtete globale Manager-Muster; auf den Geltungsbereich kommt es an, nicht auf den Namen ;)). Über dieses Objekt geht dann alles wie bisher, vollkommen ohne Locks.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Antworten