Boost logo

Boost Users :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-03-24 07:10:04


Calderon Hector wrote:
> I think boost::thread will beneficiate from a third constructor:
>
> thread::thread( boost::shared_ptr< boost::function0<void>& > )
>
> 1. This constructor will allow to use functors that are heavy to
> copy or simply non - copiable.
>
> 2. This contructor will also allow polymorphic functors. For
> example, in the following code, the copying of the functor destroys
> its polymorphism (there is not any 2 printed in the output) :
>
> #include <boost/thread/thread.hpp>
> #include <iostream>
>
> class A
> {
> public:
> unsigned int m_a;
>
> A( unsigned int a_a ) : m_a( a_a ) {}
>
> void Begin() {boost::thread ( * this );}
>
> void operator ()()
> {foo(); std::cout << m_a;}
>
> virtual void foo() {m_a = 3; std::cout << m_a;}
> };

Drop operator() and use boost::bind( &A::foo, shared_ptr<A>( new B ) ) as a
thread proc.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net