7

Asio はまだ Boost とは別に開発されていますか、それとも Boost.Asio だけがまだ更新されているバージョンですか?

Asioの Web サイトでは、両方のバージョンに利点があり、Asio は Boost よりも頻繁に更新されると述べています。ただし、サイトの最新の開発リリースは 1.5.3 で、2011 年 3 月にリリースされました。一方、2013 年 2 月の最新の Boost 1.53 リリースには、1.5.3 以降の多数の変更を含む Asio 1.8.3 が含まれています。

Asio の Web サイトは、Boost のみの更新を優先して通知なしに放棄されたか、または私が見つけられなかった場所に移動しました。何が起こったのか、はっきりと知っている人はいますか?

私が質問する理由は、自分のプロジェクトから Boost を切り出そうとしているからです。Boost.Asio は、私が現在使用している唯一の Boost ライブラリです。Asio 自体はヘッダーのみのライブラリですが、Boost.Asio は、他の方法では使用されない他のいくつかの Boost ライブラリ (System、Regex、Date_Time) を取り込みます。

私は別の軽量ソケット ライブラリに切り替えたいと思っていますが、まだ Asio ほど優れたものを見つけていません (依存性が低く、ネイティブ プラットフォームの iocp/epoll メソッドを使用しているという点で)。

4

2 に答える 2

6

Asio は個別に開発され、Boost 化され、Boost.Asioにマージされます。ただし、使用されている機能とコンパイラによっては、プロジェクトから Boost を削除できない場合があります。Asio 1.10.0 の時点で、Asio は Boost の代わりに同等の C++11 標準ライブラリを使用しようとしています。

Asio は基本的に Boost.Asio です。

  • Boost名前空間とマクロ命名規則なし。
  • Boost.System と Boost.Thread には依存しません。Asio はこれら 2 つのライブラリの代わりに独自の制限付き機能を提供するためです。

1.10.0 より前の Asio バージョンには、Boost の依存関係が存在する可能性があります。これらの依存関係は、多くの場合、テンプレート内で導入されます。したがって、依存関係は、アプリケーションが特定の機能を使用する場合にのみ発生する可能性があります。Asio および Boost.Asioページの微妙な詳細を見落としがちです。次のように記載されています。

Asio はヘッダー ファイルのみであり、ほとんどの場合、Boost ライブラリへのリンクは必要ありません。最近のバージョンの gcc、clang、または MSVC で C++11 を使用するASIO_STANDALONE場合、コンパイル時に定義することで、Boost とは別に Asio を使用できます。

一般に、次の機能は依存関係を導入します。

  • タイマーは Boost.DateTime または Boost.Chrono に依存します。Asio 1.10.0 以降では、C++11 ビルドが使用std::chronoされます。
  • read_until()正規表現を使用する操作は Boost.Regex に依存します。
  • Boost.Coroutineライブラリに基づくスタックフル コルーチン

以下の使用を検討する価値があるかもしれません:

  • BCPを使用して、プロジェクトに必要な Boost ライブラリのサブセットを抽出します。
  • libuv、ネイティブ I/O イベント通知からの非同期イベントループと抽象化を提供する C ライブラリ。 この回答では、2 つのライブラリを比較しています。
于 2013-04-18T15:18:34.330 に答える
5

ブーストなしのバージョンがどこでメンテナンスされているか電子メールで尋ねたところ、作者のクリストファー・コールホフ氏は、github でメンテナンスしていると述べました。

https://github.com/chriskohlhoff/asio

今日それを見ると、1.8.3 がそこにあるようには見えないか、少なくともラベルが付けられていないので、彼がそのレポの維持をやめた可能性があります。

于 2013-05-09T04:43:01.640 に答える