libuv_async
个人理解:多线程的数据中转工具。
展示一个demo,线程1给线程2传递一个值=123。
#include <stdio.h>
#include <stdlib.h>
#include <uv.h>
#pragma comment(lib,"uv.lib")
uv_loop_t *loop;
uv_async_t async;
void close_cb(uv_handle_t* handle) {
printf("close the handle!\n");
}
void callback_async_init(uv_async_t* handle, int status) {
uv_close((uv_handle_t*)&async, close_cb); //如果async没有关闭,消息队列是会阻塞的
}
void callback_thread1(void * args) {
int num = 123;
async.data = num;
uv_async_send(&async);
}
void callback_thread2(void * args) {
int num = (int)async.data;
printf("%d\n", num);
}
int main() {
loop = uv_default_loop();
uv_async_init(loop, &async, callback_async_init);
uv_thread_t th1, th2;
uv_thread_create(&th1, callback_thread1, NULL);
uv_thread_create(&th2, callback_thread2, NULL);
uv_thread_join(&th1); //等待子线程完成
uv_thread_join(&th2); //等待子线程完成
uv_run(loop, UV_RUN_DEFAULT);
getchar();
return 0;
}