2010-12-06 52 views

回答

4

如果我明白你總是緩衝區'BUF'的所有權。通過同步操作:: :: write,只要:: write完成,就可以刪除緩衝區。使用異步操作:: async_write,您需要提供一個異步完成標記(回調函數),該操作完成後將被調用。你可以在這個回調中刪除buf。

2

即使您想要,您也沒有指向可以刪除的緩衝區的指針。

來自buf的輸入數據用於構建Boost.Asio buffer,然後在該構造中使用的存儲器由該庫管理。寫入調用會阻塞,直到寫入所有數據,所以我想數據不會在內部複製(但我不確定)。

當你完成這個任務後,你當然應該對你給構造函數(buf)的緩衝區執行任何所需的清理。

+0

`buffer()`函數創建一個`mutable_buffer`對象,它在內部只是一個指向原始緩衝區的指針。所以沒有內存被複制,並且不佔用所有權。 – Timo 2010-12-06 19:37:27

+0

@Timo - 在阻塞調用的情況下有意義,謝謝。 – 2010-12-06 19:43:14

相關問題