Lesen aus Vector von einer unbekannten Anzahl von Threads
-
Hallo,
ich habe folgendes Problem:
ich habe einen Vector mit Zeichenketten. Aus dem Vector soll jeweils die erste Zeichenkette ausgelesen werden. Dabei soll die Zeichenkette erst gelöscht werden wenn alle Threads die Zeichenkette gelesen haben.Um zu wissen wieviele Threads gerade lesen, werden diese mit einer eindeutigen ID in einer Liste verwaltet. (Threads melden sich zum Lesen an und ab)
Hat jemand vielleicht noch eine clevere Idee wie man das lösen kann?
-
Speicher für jeden String noch die Anzahl der Threads dazu und jedes mal wenn ein Thread sich vom Lesen wieder abmeldet reduziert du den Zähler - hat der Zähler 0 erreicht kann der String gelöscht werden.
Setzt aber voraus, dass jeder Thread nur einmal liest, sonst wirds kompliziert und lohnt sich nicht mehr.
-
Evtl. ist es einfacher das ganze über Smartpointer aus TR1 zu realisieren. Einfach für jeden Thread eine Queue von Smartpointern einrichten und die auf diese Zeichenfolge verweisen.
-
Danke für eure Antworten!
Nachtrag: ja, die Threads können auch mehrmals versuchen zu Lesen.
@Martin
könntest du das mit den Smart-Pointer mal etwas genauer erklären?
-
Hmmm.... Noch nichts von Google gehört?
Suche nach "Smart Pointer und TR!" Du findest z.B.
http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c15361/