boost::asio を使用して C++ で記述されたソケット サーバーがあり、クライアントにデータを送信しています。
サーバーはデータをチャンクで送信し、クライアントは受信時に各チャンクを解析します。現在、どちらもほぼシングルスレッドです。
サーバーができるだけ速くデータを書き出すだけで、クライアントがデータを解析するのを待たないようにするには、サーバーでどのような設計を使用すればよいですか? サーバー上で非同期に何かをする必要があると思います。
これを達成するためにクライアントにも変更を加えることができると思いますが、理想的には、クライアントの記述方法に関係なく、サーバーはクライアントを待機するべきではありません。
次のようにソケットにデータを書き込んでいます。
size_t bytesWritten = m_Socket.Write( boost::asio::buffer(buffer, bufferSize));
アップデート:
Boost のメカニズムを使用して、ソケットに非同期で書き込みを試みます。http://www.boost.org/doc/libs/1_36_0/doc/html/boost_asio/tutorial/tutdaytime3/src.htmlを参照してください。
例えば
boost::asio::async_write(socket_, boost::asio::buffer(message_),
boost::bind(&tcp_connection::handle_write, shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
- アレックス