Containers (QMap) - Threadsafe
Verfasst: 7. Dezember 2007 13:49
Habe einen Thread der solange mein Container (QMap) nicht leer ist durch diesen iteriert und mit den Objekten etwas macht.
Das ganze schaut grob skizziert in etwa so aus:
Dann gibts noch eine Methode, die es ermöglicht neue Objekte hinzuzufügen:
Meine Frage ist jetzt wie ich das ganze mit Mutex absichern kann. Die Methode add kriegt vermutlich einfach einen QMutexlocker. Nur was passiert mit meinem Iterator wenn ein neues Objekt eingefügt wird? Ist der noch gültig? Wie kann ich meine Schleife absichern?
Das ganze schaut grob skizziert in etwa so aus:
Code: Alles auswählen
MyThread::run()
{
QMapIterator<int, MyObject> i(map);
while (i.hasNext()) {
i.next();
//do something....
}
}
Code: Alles auswählen
MyThread::add(int key, MyObject obj)
{
map.insert(key, obj);
}