aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Threading
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-07-24 17:11:12 +0100
committerDDuarte <dnpd.dd@gmail.com>2014-07-24 17:11:12 +0100
commit6e1c5021fe5c7c8179d9823e1c578fb5e0e43a92 (patch)
tree844750c9dee39982976bb93cc4cdbdf031a78f70 /src/server/shared/Threading
parentcdb33ab174a43fb3cc19dcd672bbfd3191fd84aa (diff)
parentb5f0b85b485e0309a952150265b5349124070b59 (diff)
Merge branch 'master' into 4.3.4
Diffstat (limited to 'src/server/shared/Threading')
-rw-r--r--src/server/shared/Threading/ProducerConsumerQueue.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h
index 98a0188b6b5..45a1cbc692a 100644
--- a/src/server/shared/Threading/ProducerConsumerQueue.h
+++ b/src/server/shared/Threading/ProducerConsumerQueue.h
@@ -26,6 +26,8 @@
template <typename T>
class ProducerConsumerQueue
{
+ static_assert(std::is_pointer<T>::value, "T for ProducerConsumerQueue must be a pointer");
+
private:
std::mutex _queueLock;
std::queue<T> _queue;
@@ -38,11 +40,10 @@ public:
void Push(const T& value)
{
- _queueLock.lock();
-
- _queue.push(std::move(value));
-
- _queueLock.unlock();
+ {
+ std::lock_guard<std::mutex> lock(_queueLock);
+ _queue.push(std::move(value));
+ }
_condition.notify_one();
}
@@ -93,7 +94,7 @@ public:
{
T& value = _queue.front();
- delete &value;
+ delete value;
_queue.pop();
}