wangzhengquan
2020-07-14 8b4ddf10e71e1c8fabd33c72b282f7da65ff682f
test2/test_queue_wrapper.c
@@ -1,36 +1,40 @@
#include "shm_queue_wrapper.h"
#include "mm.h"
typedef struct message_t
{
   char method[20];
   int code;
// typedef struct message_t
// {
//    char method[20];
//    int code;
   
} message_t;
// } message_t;
void test1() {
   unsigned int i = 0;
   int key = -1;
   int key = 1;
 
   size_t qsize = 16;
   void * queue = shmqueue_create( &key, qsize);
   message_t item;
   //message_t item;
   char msg[100];
   void *rtmsg;
   int size;
   
   for(i = 0; i < qsize; i++) {
      sprintf(item.method, "hello");
      item.code = i ;
      sprintf(msg, "%d hello", i);
      //入队
      if(shmqueue_push(queue, (void *)&item, sizeof(message_t))) {
           printf("push:%d %s\n", item.code, item.method );
      if(shmqueue_push(queue, (void *)msg, sizeof(msg))) {
           printf("push: %s\n", msg );
      }
   }
   printf("%d\n", key);
   struct timespec timeout = {1, 0};
   printf("key == %d\n", key);
   // struct timespec timeout = {1, 0};
   // int keys[] = {1,2};
   // shm_remove_queues_exclue((void *)keys, 1);
   i = 0;
   // 出队
   while((shmqueue_pop_timeout(queue, (void *)&item, &timeout)) ) {
       printf("pop:%d %s\n", item.code, item.method );
   while((shmqueue_pop_timeout(queue, &rtmsg, &size, 1, 0)) ) {
       printf("pop: %s\n", (char *)rtmsg );
       free(rtmsg);
      // cout <<  item.pic << endl;
       i++;
   }
@@ -41,10 +45,10 @@
 
int main () {
   mm_init(512);
   shm_init(512);
   test1();
   //整个进程退出时需要执行这个方法,该方法首先会检查是否还有其他进程在使用该共享内存,如果还有其他进程在使用就只是detach,如果没有其他进程在使用则销毁整块内存。
   mm_destroy();
   shm_destroy();
   return 0;
}