i'm using boost::asio library creating full duplex server. wondering whether situation possible happen.
- came request stored in own buffer.
- i filled response data in own buffer.
- i'm starting send response asynchronously.
- came new request.
- i filled response data in same buffer in had filled previous time.
- the buffer of previous write operation not yet finished corrupted new response data.
the question whether need separate buffer every write operation or in point 3 buffer copied in kind of internal buffer , can safely fill new response in same buffer?
boost::asio able full-duplex operation, should manage buffers carefully.
the general rules is:
- only 1 read operation on given socket can active @ time.
- same write operations
so can 1 write , 1 read operation simultaneously.
situation described should work in single-threaded environment since process cannot add buffer , use write simultaneously. but, there trick however: after append write buffer cannot know current async_write done or not. need start new async_write or not? moment needs verified.
p.s. , no, asio never copies buffers internally.
Comments
Post a Comment