Вам нужно присоединиться к двум темам, которые вы создали, прежде чем выйти.Добавьте глобальную логическую переменную с именем say, 'stop', инициализированную в false, и пусть t1 и t2 проверяют, что она ложна на каждой итерации:
bool stop = false;
void runPut () {
while( !stop ) {
t.getI();
}
}
void runGet () {
while( !stop ) {
t.putI();
boost::this_thread::sleep(boost::posix_time::milliseconds(100));
}
}
Затем после сна в main установите ее в true, и вызовитеобъединение в t1 и t2.
boost::this_thread::sleep(boost::posix_time::seconds(5));
stop = true;
t1.join();
t2.join();
В противном случае условные переменные уничтожаются, пока они еще используются.