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

using namespace std;
int sum=0;
boost::mutex m;
void *mrun(int t,int *a) {
   m.lock();
  if(t==1){
        for(int i=0;i<10;i++) {
            a[i]=i;
            boost::this_thread::sleep_for(boost::chrono::milliseconds(300));
            
        }
  //edo ekteleite nima1
  }else{ 
        int count=0;
        while(true) {
             cout<< "--read["<<count<<"]------"<<endl;
             for (int i=0;i<10;i++) {
                cout<< a[i]<<endl;
                }
                cout<< "-------------------"<<endl;
                boost::this_thread::sleep_for(boost::chrono::milliseconds(31));
                count ++;
                if (count >5) break;
         }
         //edo ekteleite to nima 2
    }
    m.unlock();
}


int main(void) {
      int *a=new int[10];
      // dinamikos tropos
      
      boost::thread *t1=new boost::thread(mrun,1,a);
      boost::thread *t2= new boost::thread(mrun,2,a);
      t1->join();
      t2->join();
      cout<<endl<<std::flush;
     
}
