You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
697 B
37 lines
697 B
4 years ago
|
#ifndef MUTEX_QUEUE_H
|
||
|
#define MUTEX_QUEUE_H
|
||
|
|
||
|
#include <queue>
|
||
|
#include <mutex>
|
||
|
|
||
|
template<typename data>
|
||
|
class mutex_queue
|
||
|
{
|
||
|
public:
|
||
|
mutex_queue<data>() = default;
|
||
|
bool empty()
|
||
|
{
|
||
|
std::lock_guard<std::mutex> lock(_mutex);
|
||
|
return _queue.empty();
|
||
|
}
|
||
|
data& front()
|
||
|
{
|
||
|
std::lock_guard<std::mutex> lock(_mutex);
|
||
|
return _queue.front();
|
||
|
}
|
||
|
void push(const data& _data)
|
||
|
{
|
||
|
std::lock_guard<std::mutex> lock(_mutex);
|
||
|
_queue.push(_data);
|
||
|
}
|
||
|
void pop()
|
||
|
{
|
||
|
std::lock_guard<std::mutex> lock(_mutex);
|
||
|
_queue.pop();
|
||
|
}
|
||
|
private:
|
||
|
std::queue<data> _queue;
|
||
|
std::mutex _mutex;
|
||
|
};
|
||
|
|
||
|
#endif //MUTEX_QUEUE_H
|