void consumer( the_ostream &mos, boost::sync_queue<int> & sbq) { using namespace boost; try { for(int i=0; ;++i) { int r; sbq.pull_front(r); //sbq >> r; mos << i << " pull(" << r << ") "<< sbq.size()<<"\n"; this_thread::sleep_for(chrono::milliseconds(250)); } } catch(sync_queue_is_closed&) { mos << "closed !!!\n"; } catch(...) { mos << "exception !!!\n"; } }
void producer(the_ostream &mos, boost::sync_queue<int> & sbq) { using namespace boost; try { for(int i=0; ;++i) { sbq.push_back(i); //sbq << i; mos << "push_back(" << i << ") "<< sbq.size()<<"\n"; this_thread::sleep_for(chrono::milliseconds(200)); } } catch(sync_queue_is_closed&) { mos << "closed !!!\n"; } catch(...) { mos << "exception !!!\n"; } }