
Hi Guys, Sorry for Mathias. Mathias is correct concerning the copy contructor. So my completed code looks like this: ----------------------------------------------- // Invoke several functions from multiple threads #include <iostream> #include "boost/thread/thread.hpp" #include "boost/shared_ptr.hpp" class FileThread { public: void find() { } void print() { } }; class group_helper { private: boost::shared_ptr<FileThread> m_object; public: group_helper() : m_object(boost::shared_ptr<FileThread>(new FileThread)) { } void operator()() { m_object->find(); m_object->print(); } }; int main() { group_helper gp; boost::thread_group threads; for (int i = 0; i < 2; ++i) threads.create_thread(gp); threads.join_all(); return 0; } ----------------------------------------------- On Sun, Aug 23, 2009 at 10:23 PM, Boost lzw <boostlzw@gmail.com> wrote:
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@ens-lyon.org> 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@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
--