Lock-free queue

后端 未结 5 1271
醉话见心
醉话见心 2021-01-01 07:35

\"enter \"enter

5条回答
  •  星月不相逢
    2021-01-01 08:22

    You may try this library it is built in c native. lfqueue

    For Example

    int* int_data;
    lfqueue_t my_queue;
    
    if (lfqueue_init(&my_queue) == -1)
        return -1;
    
    /** Wrap This scope in other threads **/
    int_data = (int*) malloc(sizeof(int));
    assert(int_data != NULL);
    *int_data = i++;
    /*Enqueue*/
     while (lfqueue_enq(&my_queue, int_data) == -1) {
        printf("ENQ Full ?\n");
    }
    
    /** Wrap This scope in other threads **/
    /*Dequeue*/
    while  ( (int_data = lfqueue_deq(&my_queue)) == NULL) {
        printf("DEQ EMPTY ..\n");
    }
    
    // printf("%d\n", *(int*) int_data );
    free(int_data);
    /** End **/
    
    lfqueue_destroy(&my_queue);
    

提交回复
热议问题