Сегодня я хочу использовать boost :: scoped_ptr, чтобы указать на boost :: thread.
В моем Thread.h я имею boost::scoped_ptr<boost::thread> m_thread
и в моем Thread.cpp есть функция create()
в котором должно происходить создание boost :: thread.
Я старался Thread::m_thread (new boost::thread(attr, boost::bind(%Thread::run, this)));
но неудивительно, что это не сработало.
Я сам не могу понять (или используя документацию надстройки), как бы я это сделал, так как я не до конца понимаю, что происходит с scoped_ptr и как это работает.
Раньше я использовал необработанный указатель, который работал нормально, но я не могу использовать его в данный момент.
Спасибо за ваше время!
Я не знаю, какую ошибку вы получили, попробуйте это:
class Thread {
public:
Thread() : thread_(new boost::thread(boost::bind(&Thread::run, this))) {
}
void run() {
}
~Thread() {
thread_->join();
}
private:
boost::scoped_ptr<boost::thread> thread_;
};
int main() {
Thread thread;
}
Но не забывайте, что поток может начаться до Конструктор заканчивает свою работу.
Других решений пока нет …