Ist es möglich QWaitCondition.wait() in einer Methode eines Objekts aufzurufen, das von mehreren Threads angesprochen wird, um diese aufrufenden Threads warten zu lassen?
mnagl hat geschrieben:Ist es möglich QWaitCondition.wait() in einer Methode eines Objekts aufzurufen, das von mehreren Threads angesprochen wird, um diese aufrufenden Threads warten zu lassen?
Moin, prinzipiell könnte das funktionieren, Versuch macht kluch, denke ich.
Aber: dein Mutex wird hier nie entsperrt, wenn das return davor kommt. Du könntest hier mit einem QMutexLocker arbeiten, der entsperrt das entsprechende Mutex, wenn der seinen Gültigkeitsbereich verlässt.
Ginsengelf
edit: du kriegst ein Problem, wenn mehrere Threads warten, dann geweckt werden, und jeder dequeue() aufruft, aber weniger Elemente als Threads da sind!
Damit können jetzt beliebig viele Threads sowohl lesen also auch schreiben ohne deadlocks und fehler in der synchronisation.
Deine Frage versteh ich allerdings nichts so ganz