加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 将数据读入循环缓冲区

发布时间:2020-12-16 07:06:29 所属栏目:百科 来源:网络整理
导读:是否可以将boost :: circular_buffer与boost :: asio一起使用? 具体来说,我想用boost :: asio :: async_write读取固定数量的字节,并将它们直接存储在循环缓冲区中而不进行复制. 一些示例代码会非常好! 解决方法 截至目前(Boost 1.66),不可能将数据读入boos
是否可以将boost :: circular_buffer与boost :: asio一起使用?

具体来说,我想用boost :: asio :: async_write读取固定数量的字节,并将它们直接存储在循环缓冲区中而不进行复制.

一些示例代码会非常好!

解决方法

截至目前(Boost 1.66),不可能将数据读入boost :: circular_buffer,因为它不会暴露任何方式来保留底层缓冲区中的空间,这是创建调用asio所需的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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读