Hello, I've a threadsafe queue designed as below. I'm pushing data from one thread and popping from the other thread, but the pop is not working. The movement I consumer.acquire() in the pop function from the other thread it goes to dead lock.
#define MAX_COUNT 1000 static unsigned int count = MAX_COUNT; static QSemaphore producer(count); static QSemaphore consumer; template<class T> class ThreadSafeQueue { public: ThreadSafeQueue() { } ~ThreadSafeQueue() { } void clean() { m_queue.clear(); } void push(const T& t) { qDebug() << "value in push" << t; producer.acquire(); QMutexLocker lock(&m_mutex); m_queue.enqueue(t); consumer.release(1); } T pop() { consumer.acquire(); QMutexLocker lock(&m_mutex); T i = m_queue.dequeue(); producer.release(); return i; } private: QQueue<T> m_queue; QMutex m_mutex; }; The push function is called for 1000 times though. Any clue? -- Nilesh Kokane _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest