原理

大多数程序通过特定的方式和外部交互,无论是文件读写,网络,串口,还是控制台。有的时候我们使用网络接口,琐碎的IO操作会耗费大量的时间,而这对应用来说是个很大地难题。

Asio提供了强大的工具来解决它们,并且不需要程序使用基于多线程和锁的并发模型。

Asio库为了C++系统编程而服务,特别是网络编程中它经常被用到。Asio追求以下目标:

  • 跨平台性 它支持几种常见的操作系统,而且不同操作系统实现的行为相同。
  • 高并发性 它应该帮助网络应用拥有处理成千上万并发事件的能力,每个操作系统都应该使用最优的高并发机制。
  • 高收益性 它应该支持像scatter-gather这样的IO技术,允许程序进行尽量低粒度的文件操作。
  • 从现有的优秀API中借鉴,比如BSD sockets 众所周知,BSD sockets被各种学术界借鉴,其他语言也使用了它的API风格。只要理由充分,我们就会从现有的优秀API中汲取养分。
  • 易用性 该库应该是低门槛的,初学者使用工具包就可以使用,而不是框架,方法。初学者在看了一点基本说明后就能使用。使用者最后只需要理解那几个被用到的特定函数。
  • 可扩展性 该库应该保证用户能够实现更高层的抽象,比如HTTP协议。

虽然Asio最初只是着重于网络,但是它的异步IO的思想已经扩展到了其他比如串口,文件句柄等领域。

results matching ""

    No results matching ""