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);
参数
参数名 |
类型 |
描述 |
输入/输出 |
|---|---|---|---|
queue |
kupl_queue_h |
执行 item 的 queue |
输入 |
desc |
kupl_queue_item_desc_t |
queue_item 的描述 |
输入 |
func |
const std::function<void(void)> |
queue_item 的函数指针 |
输入 |
参数名 |
类型 |
描述 |
|---|---|---|
field_mask |
uint64_t |
结构体中有效字段的掩码,使用kupl_queue_item_desc_field中的位标识。此掩码中未指定的字段将被忽略。 具体可设置的掩码:
|
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。
父主题: 多队列多流编程函数