2
我知道在async_write工作时操纵streambuf并不安全,asio作者在boost邮件列表中声明了这一点。我想知道的是,在async_read之后操纵streambuf是否安全?在boost :: asio :: async_read之后操作streambuf是否安全?
例子:
async_read(socket_, recv_streambuf_, ...);
// manipulated while async_read is working
// for example, after I call async_read,
recv_streambuf_.consume(2);
// or something advance, like this...
int var;
std::istream recv_is(recv_streambuf_);
recv_is >> var;
这是一个很好的问题。我的第一个猜测是它也是不安全的,但是你可以从streambuf理论上读取,而其他东西在其末尾写入。 – Tomaka17 2010-09-01 11:42:19
为什么要在async_read操作期间操纵streambuf? – 2010-09-01 14:34:20
@sam很好的问题。提醒我我可以在使用所有传入数据包之后进行异步处理。原因是并发。现在我认为,这是不值得的,我会在下一次异步阅读之前进行处理。 – flamemyst 2010-09-03 06:27:47