Multithreaded programmieren mit QWaitCondition
Verfasst: 16. Oktober 2008 13:31
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?
Code: Alles auswählen
class PacDataQueue
{
public:
....
void enqueue(PacWaveformChunk *w);
PacWaveformChunk * dequeue()
{
mutex.lock();
waitForData.wait(&mutex);
if (q.isEmpty())
return 0;
return q.dequeue();
mutex.unlock();
}
private:
QQueue<PacWaveformChunk*> q;
QMutex mutex;
QWaitCondition waitForData;
};
PacDataQueue dataqueue;
class PacAnalyzerThread : public QThread
{
Q_OBJECT
public:
...
void run()
{
PacWaveformChunk *data;
forever {
data=dataqueue.dequeue();
processData(data);
}
}
};