Доброго времени!
У меня есть 2 объекта в основе которых, путем композиции, инкапсулирован std::thread.
В программе нужно запустить оба потока и ждать, пока они не завершатся. Когда я выполняю:
somethread t1, t2;
t1.start();
t2.start();
t1.join();
t2.join();
// some work
exit();
то привязывается к основному потоку только t1, а t2 сам по себе.
В книге Уильямса "Параллельное программированиие на c++", читал про thread_guard, что то вроде защиты потока, где в деструкторе выполняется join() к охраняемому потоку и ждет, пока поток не завершится. Но возможно есть какие то штатные std::* средства, которые позволяют это делать.