# 线程安全栈与队列 ## 概述 ### 简介 线程安全队列,是在dequeue的基础上封装std::lock_guard,以此实现线程的相关操作。根据继承SafeQueueInner抽象类,并对dequeue的pop方法的重写,可以实现SafeStack和SafeQueue的相关方法。 `#include ` ## 涉及功能 ### 接口说明 ### OHOS::SafeQueueInner | 返回值 | 名称 | | ------ | ------------------------------------------------------------ | | | **SafeQueueInner**()
构造函数 | | | virtual **~SafeQueueInner**()
析构函数 | | void | **Erase**(T& object)
移除某个元素 | | bool | **Empty**()
队列判空 | | void | **Clear**()
清空队列元素 | | int | **Size**()
获取队列的容量 | | void | **Push**(const T& pt)
入队操作 | | void | virtual void **DoPush**(const T& pt) = 0
Push底层调用DoPush,需要重写 | | bool | **Pop**(T& pt)
出队操作 | | bool | virtual **DoPop**(T& pt) = 0
Push底层调用DoPop,需要重写 | ### OHOS::SafeQueue #### class SafeQueue : public SafeQueueInner | 返回值 | 名称 | | ------ | ------------------------------------ | | void | **DoPush**(const T& pt)
入队操作 | | bool | **DoPop**(T& pt)
出队操作 | ### OHOS::SafeStack #### class SafeStack : public SafeQueueInner | 返回值 | 名称 | | ------ | ------------------------------------ | | void | **DoPush**(const T& pt)
入栈操作 | | bool | **DoPop**(T& pt)
出栈操作 | ## 使用示例 1. 示例代码 ```c++ #include #include #include #include "../include/safe_queue.h" using namespace OHOS; using namespace std; constexpr int SIZE = 4; int main() { SafeQueue sq; SafeStack st; for (int i = 0; i < SIZE; i++) { sq.Push(i); st.Push(i); } for (int i = 0; i < SIZE; i++) { int queOut; int stackOut; sq.Pop(queOut); st.Pop(stackOut); cout << "SafeQueue pop: " << queOut << endl; cout << "SafeStack pop: " << stackOut <