Articles of boost

¿El subproceso shared_ptr es seguro?

Tengo una pregunta sobre boost::shared_ptr . Hay muchos hilos using namespace boost; class CResource { // xxxxxx } class CResourceBase { public: void SetResource(shared_ptr res) { m_Res = res; } shared_ptr GetResource() { return m_Res; } private: shared_ptr m_Res; } CResourceBase base; //———————————————- // Thread_A: while (true) { //… shared_ptr nowResource = base.GetResource(); nowResource.doSomeThing(); //… […]

Downcasting shared_ptr a shared_ptr ?

Actualización: el shared_ptr en este ejemplo es como el de Boost, pero no es compatible con shared_polymorphic_downcast (o dynamic_pointer_cast o static_pointer_cast para el caso). Intento inicializar un puntero compartido a una clase derivada sin perder el recuento de referencias: struct Base { }; struct Derived : public Base { }; shared_ptr base(new Base()); shared_ptr derived; […]

unique_ptr boost equivalent?

¿Hay alguna clase equivalente para C ++ 1x std :: unique_ptr en las bibliotecas de impulso? El comportamiento que estoy buscando es poder tener una función de fábrica segura para excepciones, como tal … std::unique_ptr create_base() { return std::unique_ptr(new Derived); } void some_other_function() { std::unique_ptr b = create_base(); // Do some stuff with b that […]

Creación de biblioteca con ABI compatible con versiones anteriores que usa Boost

Estoy trabajando en una cierta biblioteca C ++ (o más framework). Quiero que sea compatible con versiones anteriores conservando no solo la compatibilidad API sino también ABI (como el gran trabajo que hace Qt). Utilizo muchas funcionalidades de Boost y me parece que esto hace que la compatibilidad con versiones anteriores sea simplemente imposible, a […]

¿Cómo puedo obtener CMake para encontrar mi instalación alternativa de Boost?

He instalado la versión más reciente de Boost en /usr/local (con inclusiones en /usr/local/include/boost y bibliotecas en /usr/local/lib/boost ) y ahora bash instalar Wt desde el origen, pero CMake (versión 2.6) no parece encontrar la instalación de Boost. Intenta dar sugerencias útiles sobre la configuración de BOOST_DIR y Boost_LIBRARYDIR, pero no he podido hacer que […]

Impulse el streambuf de ASIO

Estoy confundido sobre la secuencia de entrada y la secuencia de salida en las clases boost asio :: streambuf. De acuerdo con los ejemplos de código (para enviar datos) en la documentación, parece que el búfer que representa la secuencia de entrada se utiliza para escribir en el zócalo y el que representa la secuencia […]

Usando vector como buffer sin inicializarlo en resize ()

Quiero usar vector como buffer. La interfaz es perfecta para mis necesidades, pero hay una penalización de rendimiento al redimensionarla más allá de su tamaño actual, ya que la memoria se inicializa. No necesito la inicialización, ya que los datos serán sobrescritos en cualquier caso por algunas funciones C de terceros. ¿Hay alguna manera o […]

SO_RCVTIME y SO_RCVTIMEO no afectan las operaciones de Boost.Asio

A continuación está mi código boost::asio::io_service io; boost::asio::ip::tcp::acceptor::reuse_address option(true); boost::asio::ip::tcp::acceptor accept(io); boost::asio::ip::tcp::resolver resolver(io); boost::asio::ip::tcp::resolver::query query(“0.0.0.0”, “8080”); boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); accept.open(endpoint.protocol()); accept.set_option(option); accept.bind(endpoint); accept.listen(30); boost::asio::ip::tcp::socket ps(io); accept.accept(ps); struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; //setsockopt(ps.native(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); setsockopt(ps.native(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); char buf[1024]; ps.async_receive(boost::asio::buffer(buf, 1024), boost::bind(fun)); io.run(); Cuando uso Telnet […]

¿Cómo vincular a libs de impulso dynamic?

Compilé boost lib y obtuve estos. //Shared/dynamic link libraries 24/03/2010 11:25 PM 53,248 boost_thread-vc80-mt-1_42.dll 24/03/2010 11:25 PM 17,054 boost_thread-vc80-mt-1_42.lib 24/03/2010 11:25 PM 17,054 boost_thread-vc80-mt.lib 24/03/2010 11:25 PM 73,728 boost_thread-vc80-mt-gd-1_42.dll 24/03/2010 11:25 PM 17,214 boost_thread-vc80-mt-gd-1_42.lib 24/03/2010 11:25 PM 17,214 boost_thread-vc80-mt-gd.lib // Static libs… does not need any dlls 24/03/2010 11:25 PM 381,716 libboost_thread-vc80-mt-1_42.lib 24/03/2010 11:25 PM […]

Copie el contenido de un streambuf a una cadena

Aparentemente boost::asio::async_read no le gustan las cadenas, ya que la única sobrecarga de boost::asio::buffer me permite crear const_buffer s, así que estoy atascado con leer todo en un streambuf. Ahora quiero copiar el contenido del streambuf en una cadena, pero aparentemente solo admite escribir en char * ( sgetn() ), crear un istream con streambuf […]