#include<boost/thread.hpp>
#include<boost/thread/barrier.hpp>
#include<iostream>

using namespace std;
using namespace boost;


//defining barrier with boost
boost::barrier sync_point(3);

void worker(int id) {
	cout<<"Thread: "<<id<<" before barrier " <<endl;
	this_thread::sleep_for(boost::chrono::milliseconds(id*1000));
	cout<<"Thread: "<<id<<" waiting at barrier "<<endl;
	sync_point.wait();
	cout<<"Thread: "<<id<<" passed barrier "<<endl;
	
                    }
int main()
{
	thread t1(worker,1);
	thread t2(worker,2);
	thread t3(worker,3);
	t1.join();
	t2.join();
	t3.join();
	return 0;
}

