プログラムで「ワーカー スレッドごとの各 io_service」設計を使用したいと考えています。しかし、UNIXソケットを再利用することはできません:
io_service io_1;
io_service io_2;
::unlink("/tmp/test");
stream_protocol::endpoint ep("/tmp/test");
stream_protocol::acceptor acceptor_1(io_1, ep, true);
stream_protocol::acceptor acceptor_2(io_2, ep, true);
io_1.run();
io_2.run();
「アドレスは既に使用されています」で失敗します。asio/basic_socket_acceptor.hpp (ブースト 1.46.1) を開くと、アクセプターのコンストラクターの説明が表示されます。
このコンストラクターはアクセプターを作成し、それを自動的に開き、指定されたエンドポイントで新しい接続をリッスンします。
@param reuse_addr コンストラクターがソケット オプション socket_base::reuse_address を設定する必要があるかどうか。
basic_socket_acceptor(boost::asio::io_service& io_service,
const endpoint_type& endpoint, bool reuse_addr = true)
これはブースト asio のバグであり、バグトラッカーに送信する必要があります。よろしいですか?