Hey, I'm trying to start a thread from a Class but the only way I did it was using a pointer.
The thing is that when I assign the thread to the pointer it wont start unless I use join().
I need it to star right away is created just like when I create a thread (boost::thread myThread(funcName);)
I was trying to use thread_group to do this, but create_thread is not working.
Here's an example of what I was doing:
(Here I used the pointer)
class Thread {
public:
Thread(){};
virtual ~Thread(){};
virtual void run() = 0;
void start(){m_Thread = new boost::thread( &Thread::run, this ); }; //wont start unless I add m_Thread.join();
private:
boost::thread* m_Thread;
};
and now... I am trying to use thread_group:
class Thread {
public:
Thread(){};
virtual ~Thread(){};
virtual void run() = 0;
void start(){g_Thread.create_thread(&Thread::run); };
private:
boost::thread_group g_Thread;
};
But I receive an error:
/usr/local/include/boost/thread/detail/thread.hpp: In member function 'void boost::detail::thread_data<F>::run() [with F = void (Thread::*)()]':
main.cpp:61: instantiated from here
/usr/local/include/boost/thread/detail/thread.hpp:56: error: must use '.*' or '->*' to call pointer-to-member function in '((boost::detail::thread_data<void (Thread::*)()>*)this)->boost::detail::thread_data<void (Thread::*)()>::f (...)'
make[2]: *** [build/Debug/GNU-MacOSX/main.o] Error 1
Im using netBeans on Mac OS X 10.6.2
Anyone knows how should I create this? or how to use simple boost::thread and launch it without using join()??
Thanks!!!
Dann