diff options
| author | DDuarte <dnpd.dd@gmail.com> | 2014-07-24 17:11:12 +0100 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-07-24 17:11:12 +0100 |
| commit | 6e1c5021fe5c7c8179d9823e1c578fb5e0e43a92 (patch) | |
| tree | 844750c9dee39982976bb93cc4cdbdf031a78f70 /src/server/shared/Threading | |
| parent | cdb33ab174a43fb3cc19dcd672bbfd3191fd84aa (diff) | |
| parent | b5f0b85b485e0309a952150265b5349124070b59 (diff) | |
Merge branch 'master' into 4.3.4
Diffstat (limited to 'src/server/shared/Threading')
| -rw-r--r-- | src/server/shared/Threading/ProducerConsumerQueue.h | 13 |
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(); } |
