将数据读入循环缓冲区
Read data into a circular buffer
是否可以将boost::circular_buffer
与boost::asio
一起使用?
具体来说,我想使用 boost::asio::async_write
读取固定数量的字节,并将它们直接存储在循环缓冲区中而无需复制。
一些示例代码会非常好!
截至目前(Boost 1.66),无法将数据读入boost::circular_buffer
,因为它不会公开任何在底层缓冲区中保留空间的方法,这是创建调用asio::read
所需的mutable_buffer
的要求。
但是可以从boost::circular_buffer
写:
boost::circular_buffer<char> cir_buf;
FillBuffer(cir_buf);
// Construct a buffer sequence with either 1 or 2 data chunks
std::vector<boost::asio::const_buffer> buffer_sequence;
auto arr1 = cir_buf.array_one();
buffer_sequence.push_back(boost::asio::buffer(arr1.first, arr1.second));
auto arr2 = cir_buf.array_two();
if (arr2.second != 0) {
buffer_sequence.push_back(boost::asio::buffer(arr2.first, arr2.second));
}
boost::asio::write(socket_, buffer_sequence);
相关文章:
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- Xaudio2在更改缓冲区或循环时弹出声音
- 将 mmap 内存用于开销非常低的循环缓冲区
- 增强循环缓冲区push_back在前面插入数据
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- 我该如何循环遍历我的数组(缓冲区——包含一个文本文件),并将其打印成30字节的块
- 将结构数据存储在循环缓冲区中
- 使用大磁盘文件的 C++ 循环缓冲区
- 在磁盘上使用循环缓冲区
- 带有模板的循环缓冲区在Keil MDK5上是模棱两可的错误?
- 具有单个生产者单一使用者的无锁循环缓冲区
- Qt有循环缓冲吗?
- 有没有办法在缓存中保持空升压循环缓冲区的前端热
- 我可以做一个循环,直到“std::cin”在输入缓冲区中看到“”字符
- 了解循环缓冲区实现的内存分配性质
- 未定义的行为怪癖:在缓冲区外读取导致循环永远不会终止
- 无锁单生产者/单消费者循环缓冲区-CPU推测能否打破内存屏障逻辑
- C++:循环缓冲区的问题
- C/C++文件输出缓冲/缓冲区切换到操作系统
- 调用linearize后奇怪的boost循环缓冲行为