what is boost.asio.detail.read_op means?
what is boost.asio.detail.read_op means?
我阅读了boost.1.50源代码中的asio,方法是什么?
void operator()(const boost::system::error_code& ec,
std::size_t bytes_transferred, int start = 0)
{
switch (start)
{
case 1:
buffers_.prepare(this->check_for_completion(ec, total_transferred_));
for (;;)
{
stream_.async_read_some(buffers_,
BOOST_ASIO_MOVE_CAST(read_op)(*this));
return; default:
total_transferred_ += bytes_transferred;
buffers_.consume(bytes_transferred);
buffers_.prepare(this->check_for_completion(ec, total_transferred_));
if ((!ec && bytes_transferred == 0)
|| buffers_.begin() == buffers_.end())
break;
}
handler_(ec, static_cast<const std::size_t&>(total_transferred_));
}
}
代码取自boost_1_50_0\boost\asio\impl\read.hpp。开关盒样式看起来很奇怪,"return;default:"???
这是一个管理组合读取操作的函子。
当第一次调用(start == 1
)时,它准备缓冲区,发出第一次读取,将自己作为完成处理程序传递,然后返回。
现在,每次作为完成处理程序调用时,它都会直接跳到default
标签,更新缓冲区和内部计数器,并在需要时发出另一次读取。
实际上,可以将此运算符拆分为两个单独的运算符:一个用于初始读取,另一个用于后续调用。但也许这样的方法会生成更多的代码,因此被库作者拒绝了。
相关文章:
- 什么是"undetectable means",它们如何更改 C/C++ 程序的对象?
- MatMul op 在 tensorflow 中是如何工作的?
- 添加 OP 张量流调试
- cv2有什么区别.StereoSGBM_create() 和 cv2.StereoBM_create() 函数用于 Op
- 如何从C++代码运行自定义 GPU tensorflow::op?
- std::p riority_queue::p op什么时候会抛出异常
- 对来自csv文件的数据执行OpenCV k-means
- 为什么捕获std :: Isringstream的RVALUE的OP会失败
- 在Vulkan中重新固定图形管道,保证了No-Op
- [expr.unary.op]/9 似乎暗示"运算符!()' 不能应用于下面的类型 A.但编译器不同意这一点
- 为什么我不能将 op 结果乘以常量特征张量数组
- 不兼容的操作原则到三元op
- 访问自定义OP的输入值时的segmenation故障
- 编译CUDA的自定义TensorFlow OP
- QFILE INIT/分配OP问题当对象是类成员时
- 创建 "no-op" DLL 版本?
- 在Python中编写和注册自定义TensorFlow OP
- 如何修复张量流中的"Non-OK-status: Not found: Op type not registered 'NoOp' in binary running"
- 如何在 Tensorflow C++ 中定义变量的自定义有状态 Op 保存值
- 我有 12 个 CPU,1 个插槽,每个插槽 6 个内核,每个内核 2 个线程 - 这些信息如何对应于 MPI 和 Op