Boost logo

Boost Users :

Subject: Re: [Boost-users] functor for boost::thread_group threads: which one is correct?
From: Boost lzw (boostlzw_at_[hidden])
Date: 2009-08-23 22:23:27


Hi Guys,

Steven is correct. After adding the following copy contructor to
group_helper class:
group_helper(const group_helper& gp) { std::cout << "group_helper::copy ctor
called" << std::endl; }

The number of ctors matches that of the dtors. So the threaded code is
correct thanks to boost::shared_ptr.

Cheers,
Robert

On Sun, Aug 23, 2009 at 10:05 PM, Mathias Gaunard <
mathias.gaunard_at_[hidden]> wrote:

> Boost lzw wrote:
>
> class group_helper { private:
>> boost::shared_ptr<FileThread> m_object; public:
>> group_helper() : m_object(boost::shared_ptr<FileThread>(new FileThread))
>> { std::cout << "group_helper::ctor called" << std::endl;}
>> void operator()() { m_object->find(); m_object->print(); }
>> ~group_helper() { std::cout << "group_helper::***dtor called" <<
>> std::endl; }
>> };
>>
>> int main()
>> {
>> group_helper gp;
>> boost::thread_group threads;
>> for (int i = 0; i < 1; ++i)
>> threads.create_thread(gp); threads.join_all();
>>
>> return 0;
>> }
>> ===========
>> Output: 1 call to "group_helper::ctor called"
>> 6 calls to "group_helper::***dtor called"
>> ===========
>> If the code is correct, does this mean that with thread_group we can no
>> longer expect the # of ctors matches that of the dtors in threaded code?
>>
>
> It has nothing to do with threads, it's because you're not displaying calls
> to the copy constructor.
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



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