Hallo,
ich würde gerne Daten für unterschiedliche Threads in eine gemeinsame Datenstruktur legen.
Beispielsweise eine std::map oder std::vector enthält dann pro Eintrag die Daten für jeweils einen Thread.
Am Beispiel des Vectors:
Jedem Thread gehört also ein Vectoreintrag in dem wiederum die eigentlichen Daten im inneren Vector sind.
Die äusseren Vectoren werden fix erzeugt bevor die Threads gestartet werden.
Jeder Thread greift nur auf seine eigenen Daten zu.
Die Daten im inneren Vector werden wie geschildert ausschließlich vom jeweiligen Thread benutzt, insofern sollte es theoretisch kein Konflikt geben.
Jetzt zur eigentlichen Frage. Ich bin mir nicht sicher ob durch den gemeinsame Übergeordnete Vector (oder Map) Konflikte ausgeschlossen sind, denn die Daten sind zwar völlig getrennt aber der Verweis darauf läuft ja immer über den selben übergeordneten vector was ja wahrscheinlich irgendwie ein Zeiger ist. Daher die Frage, ist der Zugriff über den selben äussere Vector Threadsave?
Gruß
ich würde gerne Daten für unterschiedliche Threads in eine gemeinsame Datenstruktur legen.
Beispielsweise eine std::map oder std::vector enthält dann pro Eintrag die Daten für jeweils einen Thread.
Am Beispiel des Vectors:
Code:
std::vector<std::vector<int>> 2dvector;
Jedem Thread gehört also ein Vectoreintrag in dem wiederum die eigentlichen Daten im inneren Vector sind.
Die äusseren Vectoren werden fix erzeugt bevor die Threads gestartet werden.
Jeder Thread greift nur auf seine eigenen Daten zu.
Die Daten im inneren Vector werden wie geschildert ausschließlich vom jeweiligen Thread benutzt, insofern sollte es theoretisch kein Konflikt geben.
Jetzt zur eigentlichen Frage. Ich bin mir nicht sicher ob durch den gemeinsame Übergeordnete Vector (oder Map) Konflikte ausgeschlossen sind, denn die Daten sind zwar völlig getrennt aber der Verweis darauf läuft ja immer über den selben übergeordneten vector was ja wahrscheinlich irgendwie ein Zeiger ist. Daher die Frage, ist der Zugriff über den selben äussere Vector Threadsave?
Gruß