예제 #1
0
int main(int argc, char* argv[]) {

    START_EASYLOGGINGPP(argc, argv);
    parseArgs(argc, argv);

    LOG(INFO) << "Initializing alignment provider";
    DazAlnProvider* ap;
    ap = new DazAlnProvider(popts);
    TrgBuf trgBuf(20);
    CnsBuf cnsBuf(10);

    std::thread writerThread(Writer, std::ref(cnsBuf));

    std::vector<std::thread> cnsThreads;
    for (int i=0; i < popts.threads; i++) {
        std::thread ct(Consensus, i, std::ref(trgBuf), std::ref(cnsBuf));
        cnsThreads.push_back(std::move(ct));
    }

    std::thread readerThread(Reader, std::ref(trgBuf), ap);

    writerThread.join();

    std::vector<std::thread>::iterator it;
    for (it = cnsThreads.begin(); it != cnsThreads.end(); ++it)
        it->join();

    readerThread.join();

    delete ap;

    return 0;
}
예제 #2
0
int main(int argc, char* argv[]) {
	
	std::string input_filename = FILENAME_TESTFILE;
	std::string scope_filename = SCOPE_PARAMETERFILE;
	std::string output_filename =  OUTPUT_FILENAME;

	if(argc > 1) {
		input_filename = argv[1];	
		scope_filename = argv[1];
	}
	if(argc > 2) {
		output_filename = argv[2];
	}
	
	std::cout << "Args read (" << input_filename << ", " << output_filename << ")" << std::endl;
    OutputBuffer inputBuffer(CHUNK_BUFFER_COUNT, 1);
	
	GrayBatReader<Output> gbReader(masterUri, onlineDspUri);
	
	std::cout << "Buffer created." << std::endl;

	std::thread writerThread([&inputBuffer](){
		std::fstream out;
		out.open("results.txt");
		while(!inputBuffer.isFinished()) {
			auto elem = inputBuffer.pop();
			out << elem.status << " " << elem.woffset << " ";
			std::cout << elem.status << " " << elem.woffset << " ";
			for(auto p : elem.param) out << p << " ";
			out << std::endl;
			std::cout << std::endl;
		}
		out.close();
	});
	
	gbReader.readToBuffer();
	std::cout << "Data read." << std::endl;

	//Make sure all results are written back
	writerThread.join();
	
	return 0;
}