Я использую Boost.Asio для серверного приложения, которое я пишу.
async_send
требует, чтобы вызывающий абонент сохранял право собственности на данные, которые отправляются, пока данные отправлено успешно. Это означает, что мой код (который выглядит следующим образом) выйдет из строя, и это произойдет, потому что data
больше не будет допустимым объектом.
void func()
{
std::vector<unsigned char> data;
// ...
// fill data with stuff
// ...
socket.async_send(boost::asio::buffer(data), handler);
}
Итак, моим решением было сделать что-то вроде этого:
std::vector<unsigned char> data;
void func()
{
// ...
// fill data with stuff
// ...
socket.async_send(boost::asio::buffer(data), handler)
}
Но теперь я Мне интересно, если у меня несколько клиентов, мне нужно будет создавать отдельный вектор для каждого соединения?
Или я могу использовать этот единственный вектор? Если я смогу использовать этот единственный вектор, если я перезапишу его содержимое, это испортит данные, которые я отправляю всем своим клиентам?