Si supponga che un servizio async_read_some sia stato abilitato su un socket in boost :: asio, cosa succederà se viene chiamata una lettura di blocco sullo stesso socket?Lettura simultanea e async_read_some in boost asio
Un pezzo di pseudo codice si presenta come:
using boost::asio::local::stream_protocol;
boost::asio::io_service io;
stream_protocol::socket s(io);
s.connect(stream_protocol::endpoint(address));
s.async_read_some(aBuffer, aCallback); // start async_read
boost::thread thread(boost::bind(&boost::asio::io_service::run, &io));
usleep(1000000); // do some stuff
boost::asio::read(bBuffer); // request a blocking read
Il mio test ingenuo mostra che il blocco leggere sempre avere la priorità: i dati in primo luogo riempire la bBuffer prima che il callback asincrono chiamato. È un comportamento desiderato dalla mia parte.
Domanda: È un comportamento garantito? Su tutti i tipi di socket?