From 9e418158e309ce5d02bdf296f3bed2c5d533eee0 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 09 七月 2020 20:11:42 +0800
Subject: [PATCH] udpate
---
README.md | 63 +++++++++++--------------------
1 files changed, 23 insertions(+), 40 deletions(-)
diff --git a/README.md b/README.md
index a174f32..97e5fce 100644
--- a/README.md
+++ b/README.md
@@ -14,16 +14,15 @@
void test1() {
unsigned int i = 0;
int key = 2;
-
+ //
size_t qsize = 16;
- shmqueue_t queue;
- shmqueue_init(&queue, key, qsize, sizeof(message_t));
+ void * queue = shmqueue_init( 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)) {
+ if(shmqueue_push(queue, (void *)&item)) {
printf("push:%d %s\n", item.code, item.method );
}
}
@@ -31,20 +30,21 @@
struct timespec timeout = {1, 0};
i = 0;
- while((shmqueue_pop_timeout(&queue, (void *)&item, &timeout)) ) {
+ 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);
+ //閿�姣侀槦鍒�
+ shmqueue_destroy(queue);
}
int main () {
test1();
- //鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄩ攢姣佹暣鍧楀唴瀛樸��
+ //鏁翠釜杩涚▼閫�鍑烘椂闇�瑕佹墽琛岃繖涓柟娉曪紝璇ユ柟娉曢鍏堜細妫�鏌ユ槸鍚﹁繕鏈夊叾浠栬繘绋嬪湪浣跨敤璇ュ叡浜唴瀛橈紝濡傛灉杩樻湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ氨鍙槸detach,濡傛灉娌℃湁鍏朵粬杩涚▼鍦ㄤ娇鐢ㄥ垯閿�姣佹暣鍧楀唴瀛樸��
mm_destroy();
return 0;
}
@@ -54,79 +54,62 @@
```
+
/**
* 鍒濆鍖�
* @ shmqueue
* @ key 鏍囪瘑鍏变韩闃熷垪鐨勫敮涓�key
- * @ queue_size 闃熷垪澶у皬
- * @ ele_size 闃熷垪涓厓绱犲ぇ灏�
+ * @ queue_size 闃熷垪澶у皬 , 杩欎釜鍊煎繀椤绘槸2鐨勬寚鏁板嵆 1, 2, 4, 8, 16 绛�
+ * @ ele_size 闃熷垪涓厓绱犲ぇ灏�, 杩欎釜鍊间笉鑳借秴杩�512锛屽綋鐒跺鏋滈渶瑕佸彲浠ヨ皟鏁磋繖涓渶澶ч檺鍒�
*/
-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;
-}
-
-
-
+void* shmqueue_init(int key, int queue_size, int ele_size);
/**
* 閿�姣�
*/
-inline void shmqueue_destroy(shmqueue_t *shmqueue) {
- delete (SHMQueue<ele_t> *)shmqueue->mqueue;
-}
-
+void shmqueue_destroy(void *shmqueue);
/**
* 闃熷垪鍏冪礌鐨勪釜鏁�
*/
-inline uint32_t shmqueue_size(shmqueue_t *shmqueue) {
- return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->size();
-}
-
+uint32_t shmqueue_size(void *shmqueue);
/**
* 鏄惁宸叉弧
*/
-inline int shmqueue_full(shmqueue_t *shmqueue) {
- return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->full();
-}
+int shmqueue_full(void *shmqueue);
/**
* 鏄惁涓虹┖
*/
-inline int shmqueue_empty(shmqueue_t *shmqueue) {
- return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->empty();
-}
+int shmqueue_empty(void *shmqueue);
/**
* 鍏ラ槦, 闃熷垪婊℃椂绛夊緟
*/
-inline int shmqueue_push(shmqueue_t *shmqueue, void *src_ele)
+int shmqueue_push(void *shmqueue, void *src_ele);
/**
* 鍏ラ槦, 闃熷垪婊℃椂绔嬪嵆杩斿洖
*/
-inline int shmqueue_push_nowait(shmqueue_t *shmqueue, void *src_ele)
+int shmqueue_push_nowait(void *shmqueue, void *src_ele);
/**
* 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆闃熶笉鎴愬姛灏辫繑鍥�
*/
-inline int shmqueue_push_timeout(shmqueue_t *shmqueue, void *src_ele, struct timespec * timeout)
+int shmqueue_push_timeout(void *shmqueue, void *src_ele, struct timespec * timeout);
+
/**
* 鍑洪槦, 闃熷垪绌烘椂绛夊緟
*/
-inline int shmqueue_pop(shmqueue_t *shmqueue, void *dest_ele)
+int shmqueue_pop(void *shmqueue, void *dest_ele);
/**
* 鍑洪槦, 闃熷垪绌烘椂绔嬪嵆杩斿洖
*/
-inline int shmqueue_pop_nowait(shmqueue_t *shmqueue, void *dest_ele)
+int shmqueue_pop_nowait(void *shmqueue, void *dest_ele);
+
/**
* 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭闃熶笉鎴愬姛灏辫繑鍥�
*/
-inline int shmqueue_pop_timeout(shmqueue_t *shmqueue, void *dest_ele, struct timespec * timeout)
+int shmqueue_pop_timeout(void *shmqueue, void *dest_ele, struct timespec * timeout);
```
--
Gitblit v1.8.0