mirror of
https://github.com/kerberos-io/openalpr-base.git
synced 2025-09-27 15:34:15 +08:00
Changed safequeue implementation to make it compatible with c++98
This commit is contained in:
@@ -130,7 +130,6 @@ ELSE()
|
||||
ENDIF()
|
||||
|
||||
|
||||
set (CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall ")
|
||||
if (NOT IOS)
|
||||
ADD_EXECUTABLE( alpr main.cpp )
|
||||
|
@@ -2,9 +2,7 @@
|
||||
#define SAFE_QUEUE_H_
|
||||
|
||||
#include <queue>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <condition_variable>
|
||||
#include "support/tinythread.h"
|
||||
|
||||
template <typename T>
|
||||
class SafeQueue
|
||||
@@ -12,20 +10,19 @@ class SafeQueue
|
||||
public:
|
||||
T pop()
|
||||
{
|
||||
std::unique_lock<std::mutex> mlock(_mutex);
|
||||
tthread::lock_guard<tthread::mutex> mlock(_mutex);
|
||||
while (_queue.empty()) {
|
||||
_cond.wait(mlock);
|
||||
_cond.wait(_mutex);
|
||||
}
|
||||
auto val = _queue.front();
|
||||
T val = _queue.front();
|
||||
_queue.pop();
|
||||
return val;
|
||||
}
|
||||
|
||||
void push(const T& item)
|
||||
{
|
||||
std::unique_lock<std::mutex> mlock(_mutex);
|
||||
tthread::lock_guard<tthread::mutex> mlock(_mutex);
|
||||
_queue.push(item);
|
||||
mlock.unlock();
|
||||
_cond.notify_one();
|
||||
}
|
||||
|
||||
@@ -34,15 +31,10 @@ class SafeQueue
|
||||
return _queue.empty();
|
||||
}
|
||||
|
||||
SafeQueue() = default;
|
||||
// Disable copying and assignments
|
||||
SafeQueue(const SafeQueue&) = delete;
|
||||
SafeQueue& operator=(const SafeQueue&) = delete;
|
||||
|
||||
private:
|
||||
std::queue<T> _queue;
|
||||
std::mutex _mutex;
|
||||
std::condition_variable _cond;
|
||||
tthread::mutex _mutex;
|
||||
tthread::condition_variable _cond;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user