#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 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; }