Vla*_*tiy 5 c++ recursion boost-asio
我是asio框架的新手,所以请善待.我调查了几个boost asio示例,发现人们使用这样的异步调用:
void read()
{
async_read(socket_, boost::asio::buffer(&user_[0], user_.size()),
boost::bind(&Connection::handle_user_read, this,
placeholders::error, placeholders::bytes_transferred));
}
void handle_user_read(...)
{
...
read();
...
}
Run Code Online (Sandbox Code Playgroud)
我认为这段代码不安全,因为它使用了多次递归.因此,当由于调用堆栈溢出而执行大量读取操作时,无法使用它.我在这方面并不是100%肯定,也无法找到其他人的类似想法.
有谁能详细解释一下这个?
我想 read() 函数只是将新的异步读取请求添加到 I/O 队列并立即退出,因此此代码中没有递归。
我的意思是, read() 不直接调用 Connection::handle_user_read 。它只是将函数指针存储在 IO 队列中。当一些新数据块可用时,外部代码将异步调用此函数。
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |