#include <boost/thread.hpp>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int rows;
int cols;
int nthreads;
double **a;
//boost::mutex rand_mtx;


void worker(int tid){
	for (int i=tid; i<rows; i+=nthreads){
		for (int j=0; j<cols; j++){
			double value;
			//rand_mtx.lock();
			//value=(double) rand()/(RAND_MAX+1.0);
			//rand_mtx.unlock();
			a[i][j]=(double)rand()/(RAND_MAX*1.0);
			}
		}
	}

int main(){
	srand(time(0));
	rows=100;
	cols=100000;
	nthreads=10; //1+rand()%6;
	a=new double *[rows];
	for (int i=0; i<rows; i++){
		a[i]=new double[cols];
		}
	boost::thread_group tg;
	for (int t=0; t<nthreads; t++){
		tg.create_thread(boost::bind(worker,t));
		}
	tg.join_all();
	for(int i=0; 1<rows; i++){
		for (int j=0; j<cols; j++){
			cout <<a[i][j]<<" ";
			}
		}
		cout <<endl;

return 0;
}

