Повышающий поток является подвижным, поэтому вы можете сделать что-то вроде:
boost::thread myThread;
if ( isStart ) {
myThread = boost::thread(sender);
else if ( isStop ) {
myThread.interrupt();
}
Если вы хотите передать его (например, в качестве аргумента функции),
Вы, вероятно, захотите использовать указатель или ссылку:
void
mainThread( std::string const& command, boost::thread& aThread )
{
if ( command == "start" ) {
aThread = boost::thread( sender );
} else if ( command == "stop" ) {
aThread.interrupt();
}
}
(Это, вероятно, нужно больше. Например, как написано, если вы выполните
mainThread( "start" )
дважды подряд вы отсоедините первый поток,
и больше никогда не сможешь обратиться к нему.)
Другой альтернативой будет использование boost :: shared_ptr.