Boost.Asio async_send question

Я использую 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)
}

Но теперь я Мне интересно, если у меня несколько клиентов, мне нужно будет создавать отдельный вектор для каждого соединения?

Или я могу использовать этот единственный вектор? Если я смогу использовать этот единственный вектор, если я перезапишу его содержимое, это испортит данные, которые я отправляю всем своим клиентам?

6
задан Marlon 17 March 2011 в 20:25
поделиться