解决方法:在所有线程定义之后,再加入join()
pub[0] = it.advertise("/img1", 1);
read_thread[0] = boost::thread(boost::bind(&TriVideoPublish::readVideo1, this));
pub[1] = it.advertise("/img2", 1);
read_thread[1] = boost::thread(boost::bind(&TriVideoPublish::readVideo2, this));
std::cout<<"read thread 1 join"<<std::endl;
pub[2] = it.advertise("/img3", 1);
read_thread[2] = boost::thread(boost::bind(&TriVideoPublish::readVideo3, this));
//start merge video and publish thread
//pub[3] = it.advertise("/merge_img", 1);
//read_thread[3] = boost::thread(boost::bind(&TriVideoPublish::mergeImage, this));
//read_thread[3].join();
read_thread[0].join();
read_thread[1].join();
read_thread[2].join();