Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Movable I/O Objects

Boost , Boost.Asio , C++ 2011 Support

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Когда поддержка движения доступна (через ссылки на значение r), увеличить. Asio позволяет перемещать конструкцию и назначение гнезд, последовательных портов, дескрипторов POSIX и ручек Windows.

Поддержка перемещения позволяет писать код, например:

tcp::socket make_socket(io_service& i)
{
  tcp::socket s(i);
  ...
  std::move(s);
}

или:

class connection : public enable_shared_from_this<connection>
{
private:
  tcp::socket socket_;
  ...
public:
  connection(tcp::socket&& s) : socket_(std::move(s)) {}
  ...
};
...
class server
{
private:
  tcp::acceptor acceptor_;
  tcp::socket socket_;
  ...
  void handle_accept(error_code ec)
  {
    if (!ec)
      std::make_shared<connection>(std::move(socket_))->go();
    acceptor_.async_accept(socket_, ...);
  }
  ...
};

а также:

std::vector<tcp::socket> sockets;
sockets.push_back(tcp::socket(...));

Предупреждающее слово: Ничто не мешает вам перемещать эти объекты, пока ожидаются асинхронные операции, но вряд ли это будет хорошей идеей. В частности, составные операции, такие какasync_read()сохранить ссылку на объект потока. Перемещение во время составленной операции означает, что составленная операция может попытаться получить доступ к перемещенному объекту.

Поддержка перемещения автоматически включается для<g++>4.5 и позже, когда используются опции компилятора<-std=c++0x>или<-std=gnu++0x>. Он может быть отключен путем определения<BOOST_ASIO_DISABLE_MOVE>или явно включен для других компиляторов путем определения<BOOST_ASIO_HAS_MOVE>. Обратите внимание, что эти макросы также влияют на доступностьподвижных обработчиков..


PrevUpHomeNext

Статья Movable I/O Objects раздела Boost.Asio C++ 2011 Support может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: C++ 2011 Support ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 08:08:54/0.0035130977630615/0