Christian Kruse: Zeiger Wettrennen

Beitrag lesen

Hallo TS,

Mehrere Zeiger hat mMn keinen Nutzen. Die Gesamtzahl der benötigten Taktzyklen wird durch Nebenläufigkeit nicht geringer, eher höher, […]

Die Gesamtzahl der notwendigen Zyklen ist für die Performance der Software aber ggfls überhaupt nicht relevant.

da die Mutual Exclusion (Supervisor) auch kostet.

Mutual exclusion wird idR erstens nicht durch supervising sichergestellt, sondern durch Locks (z.B. in Form von Mutexes) und zweitens ist das je nach Anwendungsfall auch gar nicht nötig. Read-only access darf durchaus konkurrierend stattfinden.

Ob das hier der Fall ist und ob hier Threading überhaupt Sinn macht, weiß ich nicht. Deshalb habe ich das auch nicht kommentiert. Wir wissen nur, dass Rolf mehrere Werte sucht. Da kann Nebenläufigkeit Sinn machen.

Als Anregung könntest Du dir mal im Reverse Engeneering anschauen, wie PHP das mit seinen "Array"-Strukturen macht. Das sind verschachtelte (sortierte) Listen von Hashes der Werte.

Nein, das sind Hash-Tabellen. Der Hash-Wert des Keys ergibt die Zelle (das Bucket) des Wertes in der Tabelle. Deine Listen kommen bei PHP erst zum Einsatz, wenn es doppelte Hash-Werte für unterschiedliche Keys gibt - Kollisionen.

Die Unterscheidung ist insofern wichtig, als dass für Hash-Tables der Aufwand für den Zugriff O(1) ist; bei Listen ist er O(n).

LG,
CK