Najlepsza dokumentacja dla Boost: asio?


141

Dokumentacja dostępna na stronie boost jest ... ograniczona.

Z tego, co przeczytałem, generalnie zgadzam się, że po prostu trudno jest znaleźć dobrą dokumentację dotyczącą biblioteki boost :: asio.

Czy tak jest naprawdę? Jeśli tak, dlaczego?

Uwagi:

  • Znalazłem już stronę internetową Asio (bez funkcji boost) - a dokumentacja wygląda na identyczną z tą na stronie boost.
  • Wiem, że Boost :: asio jest nowością! Szukam rozwiązań, a nie wymówek.

Edytować:

  • Jest propozycja dodania biblioteki sieciowej do standardowej biblioteki dla TR2 napisana przez autora Boost: asio (Christopher Kohlhoff). Chociaż nie jest to dokumentacja dla boost: asio, używa go jako podstawy dla propozycji TR2. Ponieważ autor włożył więcej wysiłku w ten dokument, uznałem, że jest on nieco pomocny, jeśli nie jako odniesienie, to przynajmniej jako przegląd.

Odpowiedzi:


54

Po pierwsze, używam Boost.Asio już od dłuższego czasu - i podzielam Twoje obawy. Aby odpowiedzieć na Twoje pytanie:

  • Dokumentacja na temat Boost.Asio jest naprawdę bardzo rzadka, poza wprowadzeniem i samouczkiem. Nie jestem autorem, ale dzieje się tak głównie dlatego, że jest po prostu zbyt wiele rzeczy do udokumentowania dla czegoś tak niskiego poziomu jak asynchroniczna biblioteka we / wy.
  • Przykłady dostarczają więcej niż samouczki. Jeśli nie masz nic przeciwko poświęceniu trochę czasu na przyjrzenie się różnym przykładom, myślę, że powinny one wystarczyć, aby zacząć. Jeśli chcesz z tym uciec, dokumentacja referencyjna powinna ci bardzo pomóc.
  • Zapytaj na liście mailingowej Boost Users and Boost Developers, jeśli naprawdę utknąłeś lub szukasz konkretnych wskazówek. Jestem prawie pewien, że wiele osób będzie skłonnych zamieścić Twoje uwagi na listach mailingowych.

Podejmowane są wysiłki (nie będące częścią Boost.Asio), aby ujawnić wiele funkcji i możliwych alternatywnych przypadków użycia. W najlepszym przypadku jest to rozproszone w Internecie w postaci blogów i innych form dokumentacji niepakowanej.

Jedna rzecz, która jest niejasna i która naprawdę będzie wymagała ścisłej współpracy z autorem i programistami biblioteki Boost.Asio, polegałaby na rozszerzeniu i dostosowaniu jej do konkretnej platformy lub dodaniu określonej nowej funkcjonalności. Należy to jednak poprawić, ale dobrą rzeczą jest to, że wygląda na to, że Asio będzie w przyszłości implementacją referencyjną dla standardowego raportu technicznego biblioteki (dla asynchronicznej biblioteki we / wy w STL).


2
Dzięki za potwierdzenie podejrzeń. Niestety, próbowałem uczyć się na przykładach, z przyzwoitym, ale ograniczonym sukcesem. Niestety nie mogę uzasadnić używania biblioteki, która ma mały zestaw przykładów jako zestaw instrukcji. Mogę posłuchać twojej rady i poprosić o ML, ale z niecierpliwością oczekuję lepszego wsparcia!
mmocny

Po prostu połączyłem dwa i dwa. Jeden z największych hitów google (i najbardziej pouczające artykuły), które znalazłem podczas wyszukiwania google boost asio na Twoim blogu :)
mmocny

Tak, ale nie chciałem jeszcze mówić tego otwarcie. ;) Chis Kholhoff (autor) ma również bloga, w którym dużo mówi o Asio io tym, jak można go wykorzystać w niecodziennych okolicznościach.
Dean Michael

@mmocny Zgadzam się, jednak jakość implementacji ASIO jest lepsza niż większości innych darmowych bibliotek wydarzeń, szczególnie pod Windows.
unixman83

63

Przyjemną dokumentację na temat boost, w tym rozdział o asio, można znaleźć w (bezpłatnej) książce doładowania pod adresem http://en.highscore.de/cpp/boost/index.html . Rozdział poświęcony asio zawiera ogólny przegląd, a następnie zawiera informacje o tym, jak tworzyć własne, niestandardowe rozszerzenia asio. Naprawdę fantastyczny wysiłek Borisa Schälinga!


41

Napisałem dwa małe artykuły, które mogą posłużyć jako wprowadzenie do boost.asio. Są dostępne w mojej witrynie


4
Znalazłem witrynę Alexa Otta niezależnie, badając, czy użyć asio lub asa w naszym obecnym projekcie. Jego strona odpowiedziała na wiele moich pytań.
deft_code,

Zgraj witrynę tego gościa. Dlatego zamieszczasz tutaj odpowiedzi zamiast linków do martwych stron internetowych do końca czasu.
maxywb

30

UWAGA: Skontaktowałem się z gamedev.net, aby poinformować ich o problemach z formatowaniem. Niestety w chwili pisania tego komentarza, ten zasób jest trudniejszy do polecania ze względu na pewne zmiany w ich witrynie, które ukrywają / usuwają instrukcje #include + brakujący zasób w pliku .zip.

Stosunkowo nowy i bardzo dobry samouczek dla początkujących Boost.Asio (który również przedstawia, jak efektywnie używać go z bind, shared_ptr i wątkami) można znaleźć tutaj:

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

Uwaga: Jeśli używasz funkcji C ++ 0x, wiele prostych zastosowań bind do tworzenia funktora można zastąpić lambdami, a shared_ptr / bind są również dostępne w najnowszej wersji Visual Studio (lub gcc, która zawiera również wątki .)

Kiedy szukałem dokumentacji lub samouczka, to pytanie ciągle pojawiało się na górze wyników wyszukiwania, więc ważne jest, aby je aktualizować, gdy pojawią się nowe samouczki.


Świetny link! Zdecydowanie dobry przewodnik po rozpoczęciu pracy z asio
Ralf

1
Dzięki za opublikowanie tego linku. Niestety poczułem, że gdy zaczynało się dobrze układać, autor upuszcza piłkę, wrzucając cię prosto do biblioteki, którą stworzył i całkowicie mnie zgubił. Przeszedł od szczegółowego wyjaśnienia, jak binddziała, do pozostawienia czytelnikowi odgadnięcia, co Hivejest w ich bibliotece.
Rotsiser Mho,

Mają interfejs ochrony ula + bezpośrednio w samouczku. Myślę, że jest to przydatne i ma sens, ponieważ przedstawiają je na stronie 10 z 11.
M2tM,

W tym artykule wymieniono plik zip z przykładami, ale go nie widzę. Ponadto #includes jest wycięty z przykładowego kodu?
Jake Gaston

Ach, niestety wygląda na to, że artykuł uległ erozji w piaskach czasu wraz z aktualizacją kodu renderującego gamedev.net, który wydaje się w ogóle nie radzić sobie z nawiasami kątowymi i nie mogę ręczyć za poprawność tej odpowiedzi w tym momencie . Chociaż może nadal być dobrym odniesieniem, jego formatowanie najwyraźniej nie zostało poprawnie przeniesione. @JakeGaston
M2tM


8

Dokumentacja asio, ta dostępna w boost, jest minimalistyczna, ale bardzo precyzyjna, każde słowo ma znaczenie. To powiedziawszy, nauczyłem się asio (i nadal się uczę) głównie od SO.

W moim zdaniem, odpowiedź na „ Mylić kiedy boost :: asio :: io_service metoda run blokuje / odblokowuje ” jest pierwszym krokiem, przeczytaj czytać ponownie, aż naprawdę zrozumieć, druga odpowiedź jest również pomocne.

Następnie mam RSS subskrybowany najnowszy tag SO boost-asio pytanie i do tych dwóch odpowiedzi:

Tanner Sansburry , autor powyższej odpowiedzi, jego odpowiedzi są zawsze bardzo dokładne, wyczerpujące, nawet z odniesieniami pięknymi schematami . Kanał RSS
Sehe (przepraszam, tylko 2.). kanał RSS

Z całym tym materiałem wkrótce staniesz się ekspertem w dziedzinie asio!




0

Trochę za późno na imprezę, ale wyszła książka zatytułowana „Boost Asio Network Programming” (wydawnictwo Packt).

Kupiłem kopię tego, przeczytałem ją w weekend i bez większego problemu napisałem na serwerze w C ++.

Zastrzeżenie: nie mam nic wspólnego z książką


Ow. Wydaje mi się, że wybrałem 3 książki o Asio z firmy Packt i nie uznałem ich za godne zaufania. Do tego stopnia, że można rozpoznać, kiedy ludzie zostali czytania złych książek z zapachy kodu one kopiowane do ich pytania tak, to patrz np stackoverflow.com/a/48084444/85371 lub stackoverflow.com/a/47698904/85371
sehe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.