鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

kupl::queue_submit

向queue提交需要执行的item。相较于kupl_queue_submit接口而言,该接口通过lambda函数特性捕获kupl_queue_submit提交item回调函数的入参,避免用户入参封装行为,提高接口易用性。

接口定义

int queue_submit(kupl_queue_h queue, kupl_queue_item_desc_t *desc, const std::function<void(void)> &func);

参数

表1 参数定义

参数名

类型

描述

输入/输出

queue

kupl_queue_h

执行 item 的 queue

输入

desc

kupl_queue_item_desc_t

queue_item 的描述

输入

func

const std::function<void(void)>

queue_item 的函数指针

输入

表2 kupl_queue_item_desc_t 的数据结构

参数名

类型

描述

field_mask

uint64_t

结构体中有效字段的掩码,使用kupl_queue_item_desc_field中的位标识。此掩码中未指定的字段将被忽略。

具体可设置的掩码:

  • KUPL_QUEUE_ITEM_DESC_FIELD_NAME:name生效
  • KUPL_QUEUE_ITEM_DESC_FIELD_EGROUP:egroup生效

func

kupl_queue_item_func_t

queue_item 的函数指针

args

void *

queue_item 的参数

name

const char *

queue_item 的名字

egroup

kupl_egroup_h

指定当前queue_item的亲和性信息

返回值

成功:返回KUPL_OK

失败:返回KUPL_ERROR

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h> 
#include <assert.h>
#include "kupl.h" 

int main() 
{ 
    kupl_queue_h queue = kupl_queue_create();
    kupl_queue_item_desc_t desc = {
        .field_mask = KUPL_QUEUE_ITEM_DESC_FIELD_NAME,
        .name = "func_name"
    };
    int ret = kupl::queue_submit(queue, &desc, []() {
        printf("queue submit test\n");
    }); 
    assert(ret == KUPL_OK);
    kupl_queue_wait(queue);
    kupl_queue_destroy(queue);
    return 0;         
}

运行结果如下。

queue submit test

上述示例演示了向queue提交item,并等待直到queue上全部任务执行完成的流程。上述kupl_queue_submit函数向queue上提交需要执行的item。