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

#include <thread_safe_queue.h>

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

Public 成员函数

 ThreadSafeQueue ()
 
ThreadSafeQueueoperator= (const ThreadSafeQueue &other)=delete
 
 ThreadSafeQueue (const ThreadSafeQueue &other)=delete
 
 ~ThreadSafeQueue ()
 
void Enqueue (const T &element)
 
bool Dequeue (T *element)
 
bool WaitDequeue (T *element)
 
std::queue< T >::size_type Size ()
 
bool Empty ()
 
void BreakAllWait ()
 

详细描述

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

在文件 thread_safe_queue.h31 行定义.

构造及析构函数说明

◆ ThreadSafeQueue() [1/2]

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

在文件 thread_safe_queue.h33 行定义.

33{}

◆ ThreadSafeQueue() [2/2]

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

◆ ~ThreadSafeQueue()

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

成员函数说明

◆ BreakAllWait()

template<typename T >
void apollo::cyber::base::ThreadSafeQueue< T >::BreakAllWait ( )
inline

在文件 thread_safe_queue.h76 行定义.

76 {
77 break_all_wait_ = true;
78 cv_.notify_all();
79 }

◆ Dequeue()

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

在文件 thread_safe_queue.h45 行定义.

45 {
46 std::lock_guard<std::mutex> lock(mutex_);
47 if (queue_.empty()) {
48 return false;
49 }
50 *element = std::move(queue_.front());
51 queue_.pop();
52 return true;
53 }

◆ Empty()

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

在文件 thread_safe_queue.h71 行定义.

71 {
72 std::lock_guard<std::mutex> lock(mutex_);
73 return queue_.empty();
74 }

◆ Enqueue()

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

在文件 thread_safe_queue.h39 行定义.

39 {
40 std::lock_guard<std::mutex> lock(mutex_);
41 queue_.emplace(element);
42 cv_.notify_one();
43 }

◆ operator=()

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

◆ Size()

template<typename T >
std::queue< T >::size_type apollo::cyber::base::ThreadSafeQueue< T >::Size ( )
inline

在文件 thread_safe_queue.h66 行定义.

66 {
67 std::lock_guard<std::mutex> lock(mutex_);
68 return queue_.size();
69 }

◆ WaitDequeue()

template<typename T >
bool apollo::cyber::base::ThreadSafeQueue< T >::WaitDequeue ( T *  element)
inline

在文件 thread_safe_queue.h55 行定义.

55 {
56 std::unique_lock<std::mutex> lock(mutex_);
57 cv_.wait(lock, [this]() { return break_all_wait_ || !queue_.empty(); });
58 if (break_all_wait_) {
59 return false;
60 }
61 *element = std::move(queue_.front());
62 queue_.pop();
63 return true;
64 }

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