![](/img/trans.png)
[英]WriteFile succeeded even when buffer is overwritten for pending operation
[英]Will the buffer be overwritten when async read?
我想在 async_read_until 之后使用 boost::async_read。 async_read_until 可以在分隔符后寫入緩沖一些數據。 我可以在 async_read_until 之后使用相同的緩沖區安全地提升 async_read 並且不會丟失已經在緩沖區中的數據嗎?
這取決於。
有將保留信息的動態緩沖區(streambuf、dynamic_string_buffer 等)。
如果使用固定緩沖區序列,則可以使用緩沖區算術來保留現有緩沖區的一部分。
它可能有助於實現反面:
[async_]read_until
保證在滿足完成條件時完成。 但是,它可能已將更多內容讀入緩沖區。 這就是為什么consume(n)
只消耗動態緩沖區的前綴。事實上,當您使用相同的動態緩沖區發出另一個 read[_until] 時,如果現有緩沖區內容已經與完成條件匹配,那么底層AsyncReadStream上可能沒有另一個
asrs.async_read_some
實際上完成。在一個極端的例子中,我最近開始使用它來演示讀取操作如何在動態緩沖區上工作,而無需執行任何真正的 IO:例如Unable to get all the data with boost asio read()
更喜歡允許您安全地執行您所描述的操作的動態緩沖區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.