From f85c9b875b060681b51f57b15074ba1c7c9f5636 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期一, 20 七月 2020 11:10:02 +0800 Subject: [PATCH] update --- test/test_queue.c | 98 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 91 insertions(+), 7 deletions(-) diff --git a/test/test_queue.c b/test/test_queue.c index db760fd..3ae812a 100644 --- a/test/test_queue.c +++ b/test/test_queue.c @@ -1,7 +1,8 @@ #include "test.h" + using namespace std; -int main () { +void testStruct() { unsigned int i = 0; int key = 2; @@ -9,8 +10,8 @@ struct Item item; size_t qsize = 16; - LockFreeQueue<struct Item> *queue = QueueFactory::createQueue<struct Item> (key, qsize); - + //LockFreeQueue<struct Item> *queue = QueueFactory::createQueue<struct Item> (key, qsize); + SHMQueue<struct Item> *queue = new SHMQueue<struct Item>(key, 16); // LockFreeQueue<struct Item> queue(16); for(i = 0; i < qsize; i++) { @@ -29,16 +30,99 @@ - struct timespec timeout = {5, 0}; + struct timespec timeout = {1, 0}; i = 0; - while((queue->pop(item)) ) { + while((queue->pop_timeout(item, &timeout)) ) { cout << i << " pop锛�" << item.pic << ", " << item.info << endl; // cout << item.pic << endl; i++; } - - destroy(key); + delete queue; +} +void testString() { + unsigned int i = 0; + std::ostringstream outstr; + int key = 2; + + shmstring item; + + size_t qsize = 16; + //LockFreeQueue<struct Item> *queue = QueueFactory::createQueue<struct Item> (key, qsize); + SHMQueue<shmstring> *queue = new SHMQueue<shmstring>(key, 16); + // LockFreeQueue<struct Item> queue(16); + for(i = 0; i < qsize; i++) { + outstr.seekp(0); + outstr << "hello " << i ; + if(queue->push(outstr.str().c_str())) { + cout << i << " push锛�" << outstr.str() << endl; + } + } + + // for(i = 0; i < qsize; i++) { + + // //queue.dequeue(item); + + // item = (*queue)[i]; + // cout << "i=" << i << ":" << item << endl; + // } + + + + struct timespec timeout = {1, 0}; + + i = 0; + while((queue->pop_timeout(item, &timeout)) ) { + cout << i << " pop锛�" << item << endl; + // cout << item.pic << endl; + i++; + } + + delete queue; +} + + +// void testArr(unsigned size) { +// unsigned int i = 0; +// int key = 2; + +// char item[size]; + +// size_t qsize = 16; +// //LockFreeQueue<struct Item> *queue = QueueFactory::createQueue<struct Item> (key, qsize); +// SHMQueue<char[size]> *queue = new SHMQueue<char[size]>(key, 16); +// // LockFreeQueue<struct Item> queue(16); +// for(i = 0; i < qsize; i++) { +// sprintf(item, "%d hello", i); +// if(queue->push(item)) { +// cout << i << " push锛�" << item << endl; +// } +// } + + + + + +// struct timespec timeout = {1, 0}; + +// i = 0; +// while((queue->pop_timeout(item, &timeout)) ) { +// cout << i << " pop锛�" << item << endl; +// // cout << item.pic << endl; +// i++; +// } + +// delete queue; +// } + + +int main () { + mm_init(512); + // testArr(12); + testStruct(); + + mm_destroy(); + return 0; } \ No newline at end of file -- Gitblit v1.8.0