Apollo 10.0
自动驾驶开放平台
apollo::cyber::base::UnboundedQueue< T > 模板类 参考

#include <unbounded_queue.h>

apollo::cyber::base::UnboundedQueue< T > 的协作图:

Public 成员函数

 UnboundedQueue ()
 
UnboundedQueueoperator= (const UnboundedQueue &other)=delete
 
 UnboundedQueue (const UnboundedQueue &other)=delete
 
 ~UnboundedQueue ()
 
void Clear ()
 
void Enqueue (const T &element)
 
bool Dequeue (T *element)
 
size_t Size ()
 
bool Empty ()
 

详细描述

template<typename T>
class apollo::cyber::base::UnboundedQueue< T >

在文件 unbounded_queue.h31 行定义.

构造及析构函数说明

◆ UnboundedQueue() [1/2]

template<typename T >
apollo::cyber::base::UnboundedQueue< T >::UnboundedQueue ( )
inline

在文件 unbounded_queue.h33 行定义.

33{ Reset(); }

◆ UnboundedQueue() [2/2]

template<typename T >
apollo::cyber::base::UnboundedQueue< T >::UnboundedQueue ( const UnboundedQueue< T > &  other)
delete

◆ ~UnboundedQueue()

template<typename T >
apollo::cyber::base::UnboundedQueue< T >::~UnboundedQueue ( )
inline

在文件 unbounded_queue.h37 行定义.

37{ Destroy(); }

成员函数说明

◆ Clear()

template<typename T >
void apollo::cyber::base::UnboundedQueue< T >::Clear ( )
inline

在文件 unbounded_queue.h39 行定义.

39 {
40 Destroy();
41 Reset();
42 }

◆ Dequeue()

template<typename T >
bool apollo::cyber::base::UnboundedQueue< T >::Dequeue ( T *  element)
inline

在文件 unbounded_queue.h59 行定义.

59 {
60 Node* old_head = head_.load();
61 Node* head_next = nullptr;
62 do {
63 head_next = old_head->next;
64
65 if (head_next == nullptr) {
66 return false;
67 }
68 } while (!head_.compare_exchange_strong(old_head, head_next));
69 *element = head_next->data;
70 size_.fetch_sub(1);
71 old_head->release();
72 return true;
73 }
Definition node.h:31

◆ Empty()

template<typename T >
bool apollo::cyber::base::UnboundedQueue< T >::Empty ( )
inline

在文件 unbounded_queue.h77 行定义.

77{ return size_.load() == 0; }

◆ Enqueue()

template<typename T >
void apollo::cyber::base::UnboundedQueue< T >::Enqueue ( const T &  element)
inline

在文件 unbounded_queue.h44 行定义.

44 {
45 auto node = new Node();
46 node->data = element;
47 Node* old_tail = tail_.load();
48
49 while (true) {
50 if (tail_.compare_exchange_strong(old_tail, node)) {
51 old_tail->next = node;
52 old_tail->release();
53 size_.fetch_add(1);
54 break;
55 }
56 }
57 }

◆ operator=()

template<typename T >
UnboundedQueue & apollo::cyber::base::UnboundedQueue< T >::operator= ( const UnboundedQueue< T > &  other)
delete

◆ Size()

template<typename T >
size_t apollo::cyber::base::UnboundedQueue< T >::Size ( )
inline

在文件 unbounded_queue.h75 行定义.

75{ return size_.load(); }

该类的文档由以下文件生成: