La mejor documentación para Boost: asio?

141

La documentación disponible en el sitio web de impulso es ... limitada.

Por lo que he podido leer, el consenso general es que es simplemente difícil encontrar buena documentación sobre la biblioteca boost :: asio.

¿Es este realmente el caso? Si es así, ¿por qué?

Notas:

  • Ya he encontrado el sitio web de Asio (sin impulso) , y la documentación parece ser idéntica a la del sitio web de impulso.
  • ¡Sé que Boost :: asio es nuevo! Estoy buscando soluciones, no excusas.

Editar:

  • Existe una propuesta para agregar una biblioteca de red a la biblioteca estándar para TR2 escrita por el autor de Boost: asio (Christopher Kohlhoff). Si bien no es documentación para boost: asio, sí lo usa como base para la propuesta TR2. Dado que el autor hizo un mayor esfuerzo en este documento, he encontrado que es algo útil, si no como una referencia, al menos como una descripción general.
mmocny
fuente

Respuestas:

54

Primero, he estado usando Boost.Asio durante bastante tiempo, y comparto su preocupación. Para abordar su pregunta:

  • Realmente hay muy poca documentación sobre Boost.Asio aparte de la introducción y el tutorial. No soy el autor, pero esto se debe principalmente a que hay demasiadas cosas que documentar para algo tan de bajo nivel como una biblioteca asincrónica de E / S.
  • Los ejemplos revelan más que los tutoriales. Si no le importa pasar un poco de tiempo mirando los diferentes ejemplos, creo que deberían ser suficientes para comenzar. Si quiere huir con él, la documentación de referencia lo ayudará mucho.
  • Pregunte en la lista de correo de Boost Users y Boost Developers si realmente está atascado o busca orientación específica. Estoy bastante seguro de que mucha gente estará dispuesta a abordar sus inquietudes en las listas de correo.

Hay esfuerzos (que no forman parte de Boost.Asio) para exponer mucha funcionalidad y posibles casos de uso alternativos. En el mejor de los casos, esto se encuentra disperso por la web en blogs y otras formas de documentación no empaquetada.

Una cosa que no está clara y que realmente necesitará una estrecha coordinación con el autor y los desarrolladores de la biblioteca Boost.Asio sería tan lejos como extenderla y personalizarla para una plataforma específica o agregar una nueva funcionalidad específica. Sin embargo, esto debería mejorarse, pero lo bueno es que parece que Asio será una implementación de referencia para un informe técnico de biblioteca estándar (para una biblioteca de E / S asíncrona en el STL) en el futuro.

Dean Michael
fuente
2
Gracias por confirmar las sospechas. Desafortunadamente, intenté aprender de los ejemplos, con un éxito decente pero limitado. Desafortunadamente, no puedo justificar el uso de una biblioteca que tiene un pequeño conjunto de ejemplos como un conjunto de instrucciones. Puedo prestar atención a sus consejos para preguntar sobre el ML, ¡pero espero ansiosamente un mejor apoyo!
mmocny
Acabo de juntar dos y dos. Uno de los éxitos de la parte superior de Google (y la mayoría de los artículos informativos) encontré mientras impulso googlear asio estaba en tu blog :)
mmocny
Sí, pero aún no quería decirlo a la intemperie. ;) Chis Kholhoff (el autor) también tiene un blog en el que habla mucho sobre Asio y cómo se puede usar en circunstancias no tan comunes.
Dean Michael
@mmocny Estoy de acuerdo, sin embargo, la calidad de la implementación de ASIO es mejor que la mayoría de las otras bibliotecas de eventos gratuitas, especialmente en Windows.
unixman83
63

Se puede encontrar buena documentación sobre boost, incluido un capítulo sobre asio, en un libro de impulso (gratuito) en http://en.highscore.de/cpp/boost/index.html . El capítulo sobre asio proporciona una descripción general y luego va tan lejos como cómo desarrollar sus propias extensiones de asio personalizadas. ¡Realmente fantástico esfuerzo de Boris Schäling!

Ralf
fuente
41

Escribí dos pequeños artículos que podrían usarse como introducciones para boost.asio. Están disponibles desde mi sitio

Alex Ott
fuente
44
Encontré el sitio web de Alex Ott de forma independiente mientras investigaba si usar o no asio o as para nuestro proyecto actual. Su sitio respondió muchas de mis preguntas.
deft_code
RIP el sitio de este chico. Es por eso que publica respuestas aquí en lugar de vincular a sitios web muertos hasta el final de los tiempos.
maxywb
30

NOTA: Me he puesto en contacto con gamedev.net para informarles sobre los problemas de formato. Lamentablemente, al momento de escribir este comentario, este recurso es más difícil de recomendar debido a algunos cambios en su sitio web que ocultan / eliminan las declaraciones #include + un recurso de archivo .zip faltante.

Aquí se puede encontrar un tutorial para principiantes relativamente nuevo y muy bueno para Boost.Asio (que también presenta cómo usarlo de manera efectiva con bind, shared_ptr y threads):

http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=1

Nota: Si usa características de c ++ 0x, muchos de los usos simples de bind para crear un functor pueden reemplazarse con lambdas, y shared_ptr / bind también están disponibles en la última versión de Visual Studio (o gcc que también incluye hilos .)

Cuando buscaba documentación o un tutorial, esta pregunta seguía apareciendo en la parte superior de los resultados de búsqueda, por lo que es importante mantenerla actualizada a medida que aparecen nuevos tutoriales.

M2tM
fuente
Gran enlace! Definitivamente una buena guía para comenzar con asio
Ralf
1
Gracias por publicar este enlace. Desafortunadamente, sentí que justo cuando comenzaba a mejorar, el autor deja caer la pelota, arrojándote directamente a la biblioteca que creó, y me perdió por completo. Pasó de explicar en detalle cómo bindfunciona a dejar que el lector adivine qué Hivehay en su biblioteca.
Rotsiser Mho
Tienen la defensa de la colmena + interfaz directamente en el tutorial. Creo que es útil y tiene sentido porque lo presentan en la página 10 de 11.
M2tM
Este artículo menciona un archivo zip con ejemplos, pero no veo uno. Además, ¿los #incluidos están recortados del código de ejemplo?
Jake Gaston
Ah, desafortunadamente parece que el artículo se ha erosionado en las arenas del tiempo con una actualización del código de representación de gamedev.net que parece no manejar bien los corchetes angulares y no puedo garantizar la validez de esta respuesta en este momento. . Si bien aún puede ser una referencia aceptable, su formato claramente no se ha migrado correctamente. @JakeGaston
M2tM
8

La documentación de asio, la disponible en boost, es minimalista pero muy precisa, cada palabra es significativa. Dicho esto, he aprendido asio (y sigo aprendiendo) principalmente de SO.

En mi opinión, la respuesta a ' Confundido cuando boost :: asio :: io_service ejecutar método bloquea / desbloquea ' es el primer paso, lea una lectura nuevamente hasta que realmente lo entienda, segunda respuesta también es útil.

Luego, me he suscrito a RSS a la nueva pregunta de etiqueta SO boost-asio ya estas dos respuestas:

Tanner Sansburry , el autor de la respuesta anterior, sus respuestas son siempre muy precisas, completas, con referencias, incluso esquemas hermosos . Fuente RSS
Sehe (lo siento Sehe, solo 2do). RSS Feed

¡Con todo ese material, pronto serás un experto en asio!

Jean Davy
fuente
0

Un poco tarde para la fiesta, pero hay un libro llamado "Boost Asio Network Programming" (publicación de Packt).

Compré una copia de esto, lo leí durante el fin de semana y luego escribí un servidor completo en C ++ sin mucho problema.

Descargo de responsabilidad: no tengo nada que ver con el libro

Dave F
fuente
Ay. He recogido, creo, 3 libros sobre Asio de Packt, y no los he encontrado confiables. En la medida en que pueda reconocer cuándo las personas han estado leyendo los libros equivocados de los olores de código que copiaron en sus preguntas SO, consulte, por ejemplo, stackoverflow.com/a/48084444/85371 o stackoverflow.com/a/47698904/85371
sehe