On 19/05/2013 14.54, Arpan Sen wrote:
Folks,
I recently moved to boost 1.52, been using a pretty old version of boost earlier. Quite a number of pieces of my code have stopped working since then, but the one that's really a pain is the ASIO piece. I have a lot of code that makes use of ASIO's async read/write and other calls and there seems to be a problem reading data from socket with async_read_until - sometimes I get empty string, there's valid data at other times.
My code is heavily multi-threaded. This problem doesn't show up in single threaded environment at all. My OS is SUSE 11 and g++-4.3.3 as the compiler. I may have to post some code eventually but on the top off your head - do you have any pointers for me?
Consider that the buffer you are passing to your async calls has to survive the handler. How many threads are running the io_service::run ? Consider that boost::asio::sockets are not multithread so only one thread at time can call the async calls on it. Can the handlers running concurrently ? If not you have to use the strand. Regards Gaetano Mendola