diff --git a/docs/zh-cn/c-utils-guide-safe_queue.md b/docs/zh-cn/c-utils-guide-safe_queue.md new file mode 100644 index 0000000000000000000000000000000000000000..78beaf14dc11fb8f3459dd3d544593be6951dbb2 --- /dev/null +++ b/docs/zh-cn/c-utils-guide-safe_queue.md @@ -0,0 +1,93 @@ +# 线程安全栈与队列 + +## 概述 + +### 简介 + +线程安全队列,是在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 <