Am 30.12.2012 um 19:31 schrieb Vicente J. Botet Escriba:

Le 30/12/12 19:20, Philipp Kraus a écrit :
Am 30.12.2012 um 12:53 schrieb Szymon Gatner:

Hi Philip,

2012/12/30 Philipp Kraus <philipp.kraus@flashpixx.de>:

Which structure must be implementated for the class myThread and from which class must be derived?

no need for derivation. Just implement operator() for your class like so:

class myThread {
   public
         some methods

 void operator()()
 {
   // this will run in new thread
 }

    private
        some properties
}
I get with this use compiler errors, this code

 boost::thread_group l_group;
for(std::size_t i=0; i < 5; ++i)

l_group.join_all();

shows: error: no match for call to '(boost::thread_group) (myThread)'

on the loop line I have tested

l_group( boost::thread(myThread) );

and creates the error: 

error: no match for call to '(boost::thread_group) (boost::thread)

In my class "myThread" I have a overloaded public method: void operator() (void);

How can I fix the error?


To create and add a new thread to a thread_group you should use

Member function create_thread()

template<typename F>
thread* create_thread(F threadfunc);
Effects:

Create a new boost::thread object as-if by new thread(threadfunc) and add it to the group.

Postcondition:

this->size() is increased by one, the new thread is running.

Returns:

A pointer to the new boost::thread object.


       l_group.create_thread( myThread() );

Thanks for this hint, I don't find this passage on the documentation at the moment, but with create_thread it works

Phil