asio c++ 库文档学习
Asio 是一个跨平台的C++库,用于网络和底层IO编程,以现代C++方式提供给开发者一个一致异步模型。
概览
原理
大多数程序以某种方式与外部世界交互,不论它通过文件,网络,串行电缆,或者控制台。以网络为例,有时单独一次的I/O操作要花费很长时间才能完成。这对程序开发造成了特别的挑战。
Asio提供了工具来管理这些长运行的操作,不需程序使用基于线程和眀锁的并发模型。
Asio库是为用C++做系统编程的编程者们准备的,这里访问操作系统功能例如网络是频繁的。特别的,Asio定位以下目标:
可移植性。库应该支持一系列常用的操作系统,并且在这些系统间提供一致的行为。
可伸缩性。库应该方便扩展到数千并发连接的网络程序的开发。每种操作系统的库实现应该用使伸缩性最好的机制。
高效。库应该支持例如分散汇集I/O的技术,使程序能够最小化数据拷贝。
已创建API的模型概念,例如BSD sockets。BSD socket API 是被广泛实现和理解的,并且涵盖许多文献。其他编程语言经常给网络APIs一个更小的接口。到目前为止合理的是,Asio应该利用现有做法。
易用。库应该为新用户提供工具箱,而不是框架,方法,以降低入门障碍。也就是,它应该尝试最小化前期时间投入,只需要学习少数基本规则和指导。然后,库使用者应该只需要理解被使用的特定函数。
进一步抽象基础。库应该是开发其他提供高层抽象库的基础。例如,实现通用协议如HTTP。
尽管Asio开始其生命主要在网络方面,它的异步I/O的概念已经扩展到了如串口,文件描述符等其他操作系统资源。
ps:看懂和翻译真不是一个难度。