ev_idle¶
ev_idle在没有更高优先级的事件后触发.
当没有别的事情做了… 只要您的进程忙于处理具有相同或更高优先级的socket、Timer、signal,ev_idle在此期间就不会被触发.
而一旦您的进程(长期)处于空闲状态, ev_idle则会在每次事件迭代中被调用一次直到被主动停止.
ev_idle还有一个应用场景就是可以做为伪后台程序的方式运行, 并且为其完成一些需要延迟善后的工作.
相关函数¶
ev_idle_init (ev_idle *, callback);
// 初始化、激活ev_idle, 他没有任何其他有意义的参数. ev_set_idle也没有什么意义.
ev_idle_start (struct ev_loop , ev_idle );
例子¶
// 只需导入单个头文件
#include <ev.h>
#include <stdio.h>
// 输出后退出.
static void idle_cb (struct ev_loop *loop, ev_idle *w, int revents)
{
puts ("Hello world.");
ev_break(loop, EVBREAK_ALL);
}
int main (void)
{
// 可以使用已定义的宏来获取默认的事件循环, 当然你也可以根据自己的需求创建指定的.
struct ev_loop *loop = EV_DEFAULT;
ev_idle idle;
ev_idle_init(&idle, idle_cb);
ev_idle_start(loop, &idle);
// 开始运行事件循环
ev_run (loop, 0);
// 如果事件循环退出, 那将会执行到这里.
return 0;
}