прямое объявление переменной boost :: thread - PullRequest
5 голосов
/ 29 декабря 2010

может кто-нибудь сказать мне, можем ли мы переслать объявление переменной boost :: thread.boost :: thread t (поток);запускает поток, но я хочу объявить его где-нибудь и запустить где-нибудь еще.Спасибо заранее.

Когда я использую

boost::thread t;
t=boost::thread (thread);

/usr/include/boost/noncopyable.hpp: In copy constructor ‘boost::thread::thread(const boost::thread&)’:
/usr/include/boost/noncopyable.hpp:27: error: ‘boost::noncopyable_::noncopyable::noncopyable(const boost::noncopyable_::noncopyable&)’ is private
/usr/include/boost/thread/thread.hpp:35: error: within this context
thr.cpp: In function ‘int main()’:
thr.cpp:20: note: synthesized method ‘boost::thread::thread(const boost::thread&)’ first required here 
/usr/include/boost/noncopyable.hpp: In member function ‘boost::thread& boost::thread::operator=(const boost::thread&)’:
/usr/include/boost/noncopyable.hpp:28: error: ‘const boost::noncopyable_::noncopyable& boost::noncopyable_::noncopyable::operator=(const boost::noncopyable_::noncopyable&)’ is private
/usr/include/boost/thread/thread.hpp:35: error: within this context
thr.cpp: In function ‘int main()’:
thr.cpp:20: note: synthesized method ‘boost::thread& boost::thread::operator=(const boost::thread&)’ first required here 

1 Ответ

4 голосов
/ 29 декабря 2010

Насколько мне известно, единственный способ сделать это - использовать thread * семантика перемещения :

boost::thread t;  // Will be initialized to `Not-a-Thread`.

// Later...
t = boost::thread(your_callable);
// Now `your_callable()` runs inside a new thread that has been moved to `t`.

РЕДАКТИРОВАТЬ: Из ошибкисообщения, которые вы опубликовали, кажется, что вы не можете использовать семантику перемещения с вашей версией Boost.Если это так, боюсь, вы не сможете инициализировать экземпляр thread и запустить его позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...