mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-18 21:13:02 +01:00
55 lines
803 B
C++
55 lines
803 B
C++
/*
|
|
* Copyright 2010-2013 Branimir Karadzic. All rights reserved.
|
|
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
|
*/
|
|
|
|
#ifndef BX_MPSCQUEUE_H_HEADER_GUARD
|
|
#define BX_MPSCQUEUE_H_HEADER_GUARD
|
|
|
|
#include "spscqueue.h"
|
|
|
|
namespace bx
|
|
{
|
|
template <typename Ty>
|
|
class MpScUnboundedQueue
|
|
{
|
|
BX_CLASS(MpScUnboundedQueue
|
|
, NO_COPY
|
|
, NO_ASSIGNMENT
|
|
);
|
|
|
|
public:
|
|
MpScUnboundedQueue()
|
|
{
|
|
}
|
|
|
|
~MpScUnboundedQueue()
|
|
{
|
|
}
|
|
|
|
void push(Ty* _ptr) // producer only
|
|
{
|
|
m_write.lock();
|
|
m_queue.push(_ptr);
|
|
m_write.unlock();
|
|
}
|
|
|
|
Ty* peek() // consumer only
|
|
{
|
|
return m_queue.peek();
|
|
}
|
|
|
|
Ty* pop() // consumer only
|
|
{
|
|
return m_queue.pop();
|
|
}
|
|
|
|
private:
|
|
LwMutex m_write;
|
|
SpScUnboundedQueue<Ty> m_queue;
|
|
};
|
|
|
|
} // namespace bx
|
|
|
|
#endif // BX_MPSCQUEUE_H_HEADER_GUARD
|