前言
libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了更简单的接口和更丰富的协议。
已经被为awesome-c和awesome-cpp所收录。
我希望从example入手,一步一步剖析libhv源码的精髓。算是
下载地址
地址:https://gitee.com/libhv/libhv.git
git clone https://gitee.com/libhv/libhv.git
编译
./configure
make
sudo make install
编译完成后,会在bin路径下生成example的文件。
example执行
首先选择一个最简单sample执行,先进入bin目录
./hloop_test
执行结果如下:
修改example,重新编译
我将hloop_test.c中的main函数做如下修改
int main() {
// memcheck atexit
HV_MEMCHECK;
hloop_t* loop = hloop_new(0);
// test idle and priority
for (int i = HEVENT_LOWEST_PRIORITY; i <= HEVENT_HIGHEST_PRIORITY; ++i) {
hidle_t* idle = hidle_add(loop, on_idle, 10);
hevent_set_priority(idle, i);
}
// test nonblock stdin
printf("input 'quit' to quit loop\n");
char buf[64];
hread(loop, 0, buf, sizeof(buf), on_stdin);
hloop_run(loop);
hloop_free(&loop);
return 0;
}
只保留idle事件和stdin事件。
重新编译hloop_test,先进入libhv目录
make hloop_test
再次进入bin目录,执行hloop_test
cd bin
./hloop_test
此时可以看到idle事件了,并且idle的触发事件严格按照优先级运行的。
总结
简单介绍了下libhv的编译和sample的执行,以及sample的修改及再编译执行。
下一篇开始分析及理解源码