From 91f003aac4c95f4d2a2fc0782c9bea9d484b6919 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 09 七月 2020 14:48:07 +0800
Subject: [PATCH] update

---
 README.md |  131 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 891e42f..29dd32a 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,131 @@
-## cppShmqueue
+## 瀹炰緥
 
-Cpp鐗堟湰鐨勫叡浜唴瀛橀槦鍒楀簱
+```
+#include "shm_queue_wrapper.h"
+#include "mm.h"
+
+typedef struct message_t
+{
+	char method[20];
+	int code;
+	
+} message_t;
+
+void test1() {
+	unsigned int i = 0;
+	int key = 2;
+ 
+	size_t qsize = 16;
+  	shmqueue_t queue;
+	shmqueue_init(&queue, key, qsize, sizeof(message_t));
+	message_t item;
+	// LockFreeQueue<struct Item> queue(16);
+	for(i = 0; i < qsize; i++) {
+		sprintf(item.method, "hello"); 
+		item.code = i ; 
+		if(shmqueue_push(&queue, (void *)&item)) {
+			  printf("push:%d %s\n", item.code, item.method );
+		}
+	}
+	 
+	struct timespec timeout = {1, 0};
+
+	i = 0;
+	while((shmqueue_pop_timeout(&queue, (void *)&item, &timeout)) ) {
+	    printf("pop:%d %s\n", item.code, item.method );
+	   // cout <<  item.pic << endl;
+	    i++;
+	}
+
+	shmqueue_destroy(&queue);
+}
+
+ 
+int main () {
+	test1();
+
+	//鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄩ攢姣佹暣鍧楀唴瀛樸��
+	mm_destroy();
+	return 0;
+}
+```
+## 鎺ュ彛璇存槑
+
+```
+
+/**
+ * 鍒濆鍖�
+ * @ shmqueue 
+ * @ key 鏍囪瘑鍏变韩闃熷垪鐨勫敮涓�key
+ * @ queue_size 闃熷垪澶у皬
+ * @ ele_size 闃熷垪涓厓绱犲ぇ灏�
+ */
+inline void shmqueue_init(shmqueue_t *shmqueue, int key, int queue_size, int ele_size) {
+	if(ele_size > MAX_ELE_SIZE) {
+		err_exit(0, "shmqueue_init 鍏冪礌澶у皬瓒呰繃璁捐鐨勬渶澶уぇ灏�");
+	}
+	SHMQueue<ele_t> *queue = new SHMQueue<ele_t>(key, queue_size);
+	shmqueue->mqueue = (void *)queue;
+	shmqueue->ele_size = ele_size;
+}
+
+
+
+/**
+ * 閿�姣�
+*/
+inline void shmqueue_destroy(shmqueue_t *shmqueue) {
+	delete (SHMQueue<ele_t> *)shmqueue->mqueue;
+}
+
+/**
+ * 闃熷垪鍏冪礌鐨勪釜鏁�
+ */
+inline uint32_t shmqueue_size(shmqueue_t *shmqueue) {
+	return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->size();
+}
+
+/**
+ * 鏄惁宸叉弧
+ */
+inline int shmqueue_full(shmqueue_t *shmqueue) {
+	return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->full();
+}
+
+/**
+ * 鏄惁涓虹┖
+ */
+inline int shmqueue_empty(shmqueue_t *shmqueue) {
+	return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->empty();
+}
+
+/**
+ * 鍏ラ槦, 闃熷垪婊℃椂绛夊緟
+ */
+inline int shmqueue_push(shmqueue_t *shmqueue, void *src_ele) 
+
+/**
+ * 鍏ラ槦, 闃熷垪婊℃椂绔嬪嵆杩斿洖
+ */
+inline int shmqueue_push_nowait(shmqueue_t *shmqueue, void *src_ele) 
+
+/**
+ * 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆瀵逛笉鎴愬姛灏辫繑鍥�
+ */
+inline int shmqueue_push_timeout(shmqueue_t *shmqueue, void *src_ele, struct timespec * timeout) 
+/**
+ * 鍑洪槦, 闃熷垪绌烘椂绛夊緟
+ */
+inline int shmqueue_pop(shmqueue_t *shmqueue, void *dest_ele)  
+
+/**
+ * 鍑洪槦, 闃熷垪绌烘椂绔嬪嵆杩斿洖
+ */
+inline int shmqueue_pop_nowait(shmqueue_t *shmqueue, void *dest_ele) 
+/**
+ * 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭瀵逛笉鎴愬姛灏辫繑鍥�
+ */
+inline int shmqueue_pop_timeout(shmqueue_t *shmqueue, void *dest_ele, struct timespec * timeout)
+
+```
 

--
Gitblit v1.8.0