der Code:Boost.Asio bestehend Betrieb laufen in Strang
In Gewinde 1:
boost::async_read(socket, buffer, strand.wrap(read_handler));
In Gewinde 2:
strand.post([](){socket.async_write_some(buffer, strand.wrap(write_handler))});
Es ist klar, dass read_handler, async_write_some, write_handler geschützt durch Strang, werden sie nicht concu rrent. Allerdings async_read ist eine zusammengesetzte Operation, wird es null oder mehr Male rufen async_read_some, jene async_read_some auch für Strähne schützen müssen oder sonst könnten sie mit async_write_some in Gewinde 2.
Aber aus dem Code Concurrent, Strang nur wickeln read_handler, wie asio macht alle Zwischenoperationen (async_read_some) auch vom Strang umwickelt?