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
: 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