Załóżmy, że usługa async_read_some została włączona w gnieździe w boost :: asio, co się stanie, jeśli zostanie wywołany blokujący odczyt w tym samym gnieździe?Równoczesne czytanie i async_read_some w boost asio
kawałek pseudo kod wygląda następująco:
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
Mój naiwny badanie pokazuje, że blokowanie czytać zawsze pierwszeństwo: dane najpierw wypełnić bBuffer przed zwrotna asynchroniczny miano. To pożądane zachowanie po mojej stronie.
Pytanie: Jest to zachowanie gwarantowane? Na wszystkich typach gniazd?