kupl_queue_wait_event
同步 queue 与一个 event,常用于两个 queue 之间的同步
接口定义
int kupl_queue_wait_event(kupl_queue_h queue, kupl_event_h event);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
queue |
kupl_queue_h |
需要同步的 queue |
输入 |
event |
kupl_event_h |
需要同步的 event |
输入 |
返回值
成功:返回 KUPL_OK
失败:返回 KUPL_ERROR
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <stdio.h> #include <assert.h> #include "kupl.h" static inline void kernel_func(void *args) { printf("kernel exec.\n"); } int main() { kupl_queue_h q1 = kupl_queue_create(); kupl_queue_h q2 = kupl_queue_create(); kupl_event_h event = kupl_event_create(); kupl_queue_item_desc_t desc = { .func = kernel_func, .args = NULL, .name = "kernel_name" }; kupl_queue_submit(q1, &desc); kupl_event_record(event, q1); int ret = kupl_queue_wait_event(q2, event); assert(ret == KUPL_OK); kupl_event_destroy(event); kupl_queue_destroy(q2); kupl_queue_destroy(q1); return 0; } |
运行结果如下。
kernel exec.

上述示例演示了向 q1 提交 kernel,并在 q1 和 q2 之间做同步的流程。上述 kupl_queue_wait_event 函数等待 q1 中的 kernel 执行完成再往下执行。
父主题: 多队列多流编程函数