Hallo,
ich habe einen Vektor aus Objekten:
1 | class Data {
|
2 | };
|
3 |
|
4 | vector<Data> vect;
|
Nun habe ich einige Workerthreads, die sich jeweils immer ein Objekt aus
der Liste "leihen" (einen Zeiger auf in Objekt im Vektor), einige
Sekunden damit arbeiten und wieder einige Zeit warten. Die Worker sollen
das gleichzeitig dürfen. Nun gibt es noch einen Thread der die Struktur
ändern kann (hinzufügen oder Entfernen von Datenobjekten). Der
"Strukturthread" soll, wenn Umbauarbeiten anstehen, warten bis alle
Worker gerade kein Datenobjekt mehr brauchen. Während der Strukturthread
umbaut, darf kein Workerthread ein Datenobjekt bekommen. Damit der
Strukturthread nicht unendlich warten muss, dürfen die Worker auch schon
nichts aus der Liste holen wenn Umbauarbeiten anstehen.
1. Workerthreads leihen Objekte, auch gleichzeitig
2. Umbaumaßnahmen stehen an;
a) Workerthreads müssen warten bis Objekte geholt werden können
b) Strukturthread wartet bis alle Worker fertig sind
3. Vektor umbauen
4. Workerthreads dürfen wieder Objekte holen.
Mir stehen Semaphore und Mutexe zur Verfügung (Linux Posix C++), aber
wie könnte ich das damit umsetzen?
Werner