23 namespace perception {
32 virtual void Push(
const Data &data) {
38 virtual void Pop(Data *data) {
67 return static_cast<int>(
queue_.size());
88 template <
typename Data>
96 virtual void Push(
const Data &data) {
98 while (this->
queue_.size() >= max_count_) {
99 condition_full_.Wait(&this->
mutex_);
107 if (this->
queue_.size() >= max_count_) {
115 virtual void Pop(Data *data) {
118 while (this->
queue_.empty()) {
121 *data = this->
queue_.front();
123 condition_full_.Signal();
129 if (this->
queue_.empty()) {
133 *data = this->
queue_.front();
135 condition_full_.Signal();
139 bool Full()
const {
return this->
queue_.size() >= max_count_; }
146 const size_t max_count_;
FixedSizeConQueue(size_t max_count)
Definition: concurrent_queue.h:91
virtual void Pop(Data *data)
Definition: concurrent_queue.h:38
bool TryPop(Data *data)
Definition: concurrent_queue.h:48
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
CondVar condition_variable_
Definition: concurrent_queue.h:83
virtual void Push(const Data &data)
Definition: concurrent_queue.h:32
virtual void Push(const Data &data)
Definition: concurrent_queue.h:96
virtual bool TryPop(Data *data)
Definition: concurrent_queue.h:126
void Signal()
Definition: mutex.h:64
std::queue< Data > queue_
Definition: concurrent_queue.h:81
bool Empty()
Definition: concurrent_queue.h:60
Mutex mutex_
Definition: concurrent_queue.h:82
virtual ~FixedSizeConQueue()
Definition: concurrent_queue.h:94
void Clear()
Definition: concurrent_queue.h:70
bool Full() const
Definition: concurrent_queue.h:139
virtual void Pop(Data *data)
Definition: concurrent_queue.h:115
ConcurrentQueue & operator=(const ConcurrentQueue &)=delete
Definition: concurrent_queue.h:89
void Wait(Mutex *mu)
Definition: mutex.h:62
ConcurrentQueue()
Definition: concurrent_queue.h:29
int Size()
Definition: concurrent_queue.h:65
virtual ~ConcurrentQueue()
Definition: concurrent_queue.h:30
virtual bool TryPush(const Data &data)
Definition: concurrent_queue.h:105
Definition: concurrent_queue.h:27