Boost logo

Boost Users :

Subject: Re: [Boost-users] boost thread with class
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2012-12-30 13:31:41


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_at_[hidden]>:
>>
>>> 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() );

Best,
Vicente



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