比特币源码解析-准备知识-Libevent & QT
01 libevent 简介
libevent是一个轻量级的开源的高性能的事件触发的网络库;
适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。
特点:
- 事件驱动,高性能;
- 轻量级,专注于网络(相对于ACE);
- 开放源码,代码相当精炼、易读;
- 跨平台,支持Windows、Linux、BSD和Mac OS;
- 支持多种I/O多路复用技术(epoll、poll、dev/poll、select和kqueue等),在不同的操作系统下,做了多路复用模型的抽象,可以选择使用不同的模型,通过事件函数提供服务;
- 支持I/O,定时器和信号等事件;
- 采用Reactor模式。
主要的功能:
libevent提供了事件通知,io缓存事件,定时器,超时,异步解析dns,事件驱动的http server以及一个rpc框架。
事件通知:当文件描述符可读可写时将执行回调函数。
Io缓存:缓存事件提供了输入输出缓存,能自动的读入和写入,用户不必直接操作io。
定时器:libevent提供了定时器的机制,能够在一定的时间间隔之后调用回调函数。
信号:触发信号,执行回调。
异步的dns解析:libevent提供了异步解析dns服务器的dns解析函数集。
事件驱动的http服务器:libevent提供了一个简单的,可集成到应用程序中的HTTP服务器。
RPC客户端服务器框架:libevent为创建RPC服务器和客户端创建了一个RPC框架,能自动的封装和解封数据结构。
在比特币的应用当中,libevent主要用来实现httpserver用来处理bitcoin-cli的指令,具体使用技术参考后续文章。
02 QT简介
Qt 是一个著名的 C++ 应用程序框架。
比特币源码中,QT是用来编写钱包图形界面,所有代码全部在src/qt目录下,具体分析参考后续文章。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Qin Blog!