comparison Core/MultiThreading/SharedMessageQueue.cpp @ 723:0da078f3affc

multithreading tests
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 18 Feb 2014 16:18:42 +0100
parents 2d0a347e8cfc
children a811bdf8b8eb
comparison
equal deleted inserted replaced
722:3596177682a9 723:0da078f3affc
87 } 87 }
88 } 88 }
89 89
90 std::auto_ptr<IDynamicObject> message(queue_.front()); 90 std::auto_ptr<IDynamicObject> message(queue_.front());
91 queue_.pop_front(); 91 queue_.pop_front();
92 emptied_.notify_all(); 92
93 if (queue_.empty())
94 {
95 emptied_.notify_all();
96 }
93 97
94 return message.release(); 98 return message.release();
95 } 99 }
96 100
97 101
99 bool SharedMessageQueue::WaitEmpty(int32_t millisecondsTimeout) 103 bool SharedMessageQueue::WaitEmpty(int32_t millisecondsTimeout)
100 { 104 {
101 boost::mutex::scoped_lock lock(mutex_); 105 boost::mutex::scoped_lock lock(mutex_);
102 106
103 // Wait for the queue to become empty 107 // Wait for the queue to become empty
104 if (!queue_.empty()) 108 while (!queue_.empty())
105 { 109 {
106 if (millisecondsTimeout == 0) 110 if (millisecondsTimeout == 0)
107 { 111 {
108 emptied_.wait(lock); 112 emptied_.wait(lock);
109 } 113 }