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; }
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; }