Otros sitios...

Búsqueda

Antispam

SnapShoot: Hilos en C++ a la boost

November 12th, 2008 by Jorge Machin

Boost es una excelente librería con todo lo que un buen programador de C++ pudiera necesitar. Además está desarrollada para hacer la programación sencilla, elegante y rápida. A continuación incluyo un ejemplo simple que puede servir de prototipo en diversos proyectos:

#include <iostream>

#include <boost/bind.hpp>
#include <boost/thread/thread.hpp>

class Hilo {

   public:

      Hilo() : keepgoing( true ), thread( boost::bind( &Hilo::do_work, this ) ) { };

      ~Hilo() {

         keepgoing = false;

         // Necesitamos esperar a que el hilo se acabe :)

         thread.join();

      }

   private:

      bool keepgoing;

      boost::thread thread;

      void do_work() {

          // Aquí es donde se lleva a cabo toda la acción.

          while( keepgoing ) {

             std::cout <<"Hilo" << std::endl;
             sleep(1);

          }

       }

};

int main( void ) {

   Hilo *hilo = new Hilo();

   sleep(20);

   delete hilo;

   return EXIT_SUCCESS;

}

El programa lo podemos compilar con:

g++ -O2 -o main main.cpp -lboost_thread-mt

Notas:

- Como se puede ver esta aproximación es más parecida a como le hace C# que Java.

- El hilo comienza al crearse el objeto.

- No hay manera de controlar manualmente el tamaño del stack

- Si no hay recursos suficientes se lanza una excepción y el objeto no se crea.

Posteado en C/C++, Snapshots |

Deje un comentario

Por favor note: La moderación de comentarios está activada y puede retrasar la publicación de los comentarios. No es necesario enviar de nuevo el mismo comentario.