On Thu, Sep 17, 2009 at 10:27 AM, Kyle Tarplee
So it seems you can not have multiple outstanding async_read_some or async_write_some. This makes since.
You might have multiple outstanding async requests. But in that case, you must write code to assure consistence. For async_read, the completion handlers may be called out of order, so you need to keep track about the order of the requests (you could, for example, give a sequence number for each async_read, and pass that number to the callback function). On the other hand, for async_write, since it is divided in many async_write_some, you must wait one operation complete before requesting another one. This avoids your data being interleaved. Read the links I posted in earlier message for further information. Kindly,
Now the thing that doesn't make since is that since a user could easily make such an error and the problem would be hard to track down (for instance it hasn't caused me a problem yet, just wasn't getting the warm fuzzy feeling about what I was doing) why does ASIO's socket not throw an error or behave more like the deadline_timer when one tries to create multiple async_ operations. The deadline_timer kindly cancels the async_wait() when you call expires_fron_now(). It seems like the socket could cancel the previous read/write by calling it's callback with an error like operation_aborted.
Kyle
On Sep 16, 2009, at 2:40 PM, Matheus Araújo Aguiar wrote:
On Wed, Sep 16, 2009 at 4:39 PM, Igor R
wrote: I have a boost::asio::ip::tcp::socket that I want to write to. Can I have multiple outstanding async_write() requests for a single socket?
asio::async_write() is a convenience function that calls socket::async_write_some() multiple times - until all the data is sent. This means that if you issue multiple asio::async_write's, the data will be interleaved in most cases. As for multiple async_write_some(), it will probably work on some platforms... But note that async_write_some doesn't promise to send all your data. So you can't "fire and forget" anyway. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
I had the same doubt, and asked the same think some weeks ago. Here's what helped me figuring out what happens: - http://archives.free.net.ph/message/20090821.085221.7ccd0f8a.pt-BR.html - http://www.jetbyte.com/portfolio-showarticle.asp?articleId=44&catId=1&subcatId=2
Regards, -- Matheus Araújo Aguiar Computer Scientist matheus.pit@gmail.com
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Matheus Araújo Aguiar Computer Scientist matheus.pit@gmail.com