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