Повысить указатель на область действия, чтобы увеличить поток

Сегодня я хочу использовать 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 и как это работает.
Раньше я использовал необработанный указатель, который работал нормально, но я не могу использовать его в данный момент.

Спасибо за ваше время!

0

Решение

Я не знаю, какую ошибку вы получили, попробуйте это:

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;
}

Но не забывайте, что поток может начаться до Конструктор заканчивает свою работу.

1

Другие решения

Других решений пока нет …