Boost库
官方文档翻译
慕长生
一个想买路虎的程序猿!!!
展开
-
Boost.Asio - Streams, Short Reads and Short Writes
Boost.Asio中的很多I/O对象都是面向流的,这意味着: 没有消息边界。将要被传输的数据是一个连续的字节序列。 读写操作传输的字节可能要少于请求的字节。这被称为短读或者短写。 Objects that provide stream-oriented I/O model one or more of the following type requirements: SyncReadStream, 用一个叫read_some()的成员函数来执行同步读操作。 AsyncReadStream, 用一个叫原创 2020-09-22 21:38:00 · 298 阅读 · 0 评论 -
Boost.Asio - Buffers
从根本上讲,I/O涉及在连续内存区域(叫做缓冲区)之间传递数据。这些缓冲区可以简单地被表示为一个由指针和字节数组成的元组。然而,为了允许开发高效率的网络应用,Boost.Asio为scatter-gather操作提供支持。这些操作涉及一个或多个缓冲区: 一个scatter-read接收数据到多个缓冲区。 一个gather-write传输多个缓冲区。 因此我们需要一个抽象来表达一组缓冲区。Boost.Asio使用的方法是定义一个类型(实际上是两个类型)来表示一个缓冲区。这些缓冲区可以被存储在一个容器中,容原创 2020-09-22 16:30:47 · 445 阅读 · 0 评论 -
Boost.Asio - Strands: Use Threads Without Explicit Locking
一个strand被定义为一个事件处理器的严格顺序调用(即没有并发调用)。strands的使用允许在多线程程序中的代码无需明显的锁(例如 使用mutexes)。 Stands可以是隐式或显式的,如以下替代方法所示: 由于io_context保证处理器只会被在run()函数中调用,所以 只从一个线程调用io_context::run()意味着所有事件处理器都执行在一个隐式strand中。 当存在一条与连接相关的异步操作的单链时(例如,半双工协议实现像HTTP)处理器不可能并发执行。这是一条隐式的stand。原创 2020-09-22 15:42:20 · 275 阅读 · 0 评论 -
Boost.Asio - Threads and Boost.Asio
Thread Safety 一般来说,不同对象的并发使用是安全的,但单一对象的并发使用是不安全的。然而,像io_context这样的类型可以为并发使用单一对象提供强有力的保证。 Thread Pools 多个线程可以通过调用io_context::run()来设置一个线程池,可以在线程池中调用完成处理程序。这个方法也可以与post方法一起使用,作为跨线程池执行任意计算任务的一种方法。 . 注意所有被加入到io_context的线程池的线程都是等价的,io_context可以在所有线程之间以任意方式分配任务。原创 2020-09-21 11:10:37 · 205 阅读 · 0 评论 -
Boost.Asio - The Proactor Design Pattern: Concurrency Without Threads
Boost.Asio库为同步操作和异步操作提供并行支持。异步操作支持基于Proactor设计模式。与同步操作或者Reactor方法相比较,这种方法的优点和缺点概述如下: Proactor and Boost.Asio 让我们看看Proactor设计模式是如何在Boost.Asio库中实现的,不用参考平台相关细节。 Proactor design pattern (adapted from [POSA2]) — Asynchronous Operation 定义一个异步执行的操作,例如在socket上的异步原创 2020-09-09 07:36:13 · 259 阅读 · 0 评论 -
Boost.asio -整体剖析
Boost.Asio既能用于同步IO对象,也能用于异步IO对象,例如套接字。下面的图对使用此库很有用。 作为一个介绍性的例子,让我们思考一下,当执行一个socket连接时会发生什么。 我们将会从分析同步操作开始。 你的程序应该有至少一个I/O执行上下文,比如一个boost::asio::io_context对象,一个boost::asio::thread_pool对象,或者boost::asio::system_context对象。这个I/O执行上下文代表你的程序连接到操作系统的I/O服务。 ...原创 2020-09-06 22:05:57 · 514 阅读 · 0 评论