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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |