We can interrupt a secondary thread from the thread that lauched it using the method thread::interrupt().
But the secondary thread has a few ways to come avoid the request of interrupting.
It could declare an object of type boost::this_thread::disable_interruption that marks a region where interrupts are not allowed to work as expected by the caller.
It could catch the exception that would cause its execution to be interrupted, its type is boost::thread_interrupted.
Another fact to keep in mind is that an interruption could be executed only at specific interruption point, that is where a join(), wait(), sleep(), or interruption_point() is called.