2009-08-04 24 views
8

¿Cuál es la diferencia entre llamar read_some/write_some funciones miembro boost::asio::ip::tcp::socket 's y llamando a los boost::asio::read/boost::asio::write funciones gratuitas?Boost :: Asio operaciones de lectura/escritura

Más específicamente:

¿Hay alguna ventaja de utilizar uno sobre el otro?

¿Por qué ambos están incluidos en la biblioteca?

Respuesta

13

read_some y write_some pueden regresar tan pronto como se haya transferido un solo byte. Como tal, necesita hacer un ciclo si desea asegurarse de obtener todos los datos, pero esto puede ser lo que desea.

Las funciones gratuitas son envoltorios de read_some y write_some, y tienen diferentes condiciones de terminación dependiendo de la sobrecarga. Normalmente esperan a que se transfiera por completo el búfer (o se produce un error, o en algunas sobrecargas se produce una condición de finalización explícita)

+0

¿Pero por qué incluir ambos? –

+0

Hacen cosas diferentes (diferentes condiciones de terminación). He editado mi respuesta un poco, espero que esté más claro ahora. – bdonlan

Cuestiones relacionadas