2010-09-01 141 views
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; 
+0

这是一个很好的问题。我的第一个猜测是它也是不安全的,但是你可以从streambuf理论上读取,而其他东西在其末尾写入。 – Tomaka17 2010-09-01 11:42:19

+1

为什么要在async_read操作期间操纵streambuf? – 2010-09-01 14:34:20

+0

@sam很好的问题。提醒我我可以在使用所有传入数据包之后进行异步处理。原因是并发。现在我认为,这是不值得的,我会在下一次异步阅读之前进行处理。 – flamemyst 2010-09-03 06:27:47

回答

1

你应该能够执行你的async_read回调时做任何你喜欢与流缓冲。回调让我们知道asio何时完成使用内存。

相关问题