My app writes out a large amount of data to a socket, in a loop, in pieces, say 8kb at a time. I'd like to switch from using Socket::send to use asio::async_write. At a high level, what do I need to do? From my reading, I think I need to: 1. Call async_write instead of send 2. Ensure that my buffers have the correct lifetime - today since my writes are synchronous I re-use the same buffer over and over again - so instead, should I make a new buffer for each write? Whats a good way to ensure the buffer has the correct lifetime, e.g. how do I delete it once its been written out? 3. I understand I can't call async_write again before the first one has been completed (since I don't want my 8kb chunks interleaved), so should I maintain a queue of buffers waiting to go out? Then in my handle_write method should I check the queue, if at least one buffer is in the queue then I should start a new async_write? Thanks! - Alex