#include <cstdio>
#include <stdio.h>
#include <stdlib.h>
#include <libuv/uv.h>
#include <unistd.h>
uv_loop_t* create_loop()
{
uv_loop_t* loop = (uv_loop_t*)malloc(sizeof(uv_loop_t));
if (loop) {
uv_loop_init(loop);
}
return loop;
}
void signal_handler(uv_signal_t* handle, int signum)
{
printf("Signal received: %d\n", signum);
uv_signal_stop(handle);
}
/*线程中运行循环*/
void thread_worker(void* userp)
{
//获取线程ID
uv_thread_t self_id = uv_thread_self();
printf("thread id = %lu\n", self_id);
uv_loop_t* loop2 = create_loop();
uv_loop_t* loop3 = create_loop();
uv_signal_t sig2;
uv_signal_init(loop2, &sig2);
uv_signal_start(&sig2, signal_handler, SIGUSR1);
uv_signal_t sig3;
uv_signal_init(loop3, &sig3);
uv_signal_start(&sig3, signal_handler, SIGUSR1);
while (uv_run(loop2, UV_RUN_NOWAIT) || uv_run(loop3, UV_RUN_NOWAIT)) {
}
}
int main()
{
printf("PID %d\n", getpid());
uv_thread_t thread;
uv_thread_create(&thread, thread_worker, 0);
//等待子线程结束
uv_thread_join(&thread);
return 0;
}