我有一个套接字服务器,使用 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));
- 亚历克斯