基本原理
大多数程序都以某种方式与外部世界交互,无论是通过文件、网络、串口电缆还是控制台。有时,像网络操作这样的 I/O 操作可能需要较长时间才能完成,这对应用程序开发带来了特殊挑战。
Boost.Asio 提供了管理这些长时间运行操作的工具,而无需程序使用基于线程和显式锁定的并发模型。
Boost.Asio 库主要面向使用 C++ 进行系统编程的开发人员,尤其是在需要访问操作系统功能(如网络)的场景中。该库特别关注以下目标:
可移植性:库应支持常见的操作系统,并在这些系统之间提供一致的行为。
可扩展性:库应促进开发能够扩展到数千个并发连接的网络应用程序。每个操作系统上的库实现应使用最佳机制来实现这种扩展性。
效率:库应支持例如散播-聚集(scatter-gather) I/O 之类的技术,并允许程序最小化数据复制。
基于已建立的 API 模型:如 BSD sockets API,这些 API 得到了广泛的实现和理解,且有大量文献覆盖。Boost.Asio 应尽量利用现有的实践。
易用性:库应降低新用户的学习门槛,采用工具包的方式,而非框架模式。用户只需了解一些基本规则和准则即可入门,之后只需理解具体使用的函数。
进一步抽象的基础:库应允许开发提供更高抽象层次的其他库,如常用协议(如 HTTP)的实现。
尽管 Boost.Asio 最初专注于网络编程,其异步 I/O 概念现已扩展到其他操作系统资源,如串口、文件描述符等。
Last updated