MCPcopy Create free account
hub / github.com/OpenGene/fastp / processorTask

Method processorTask

src/seprocessor.cpp:434–471  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

432}
433
434void SingleEndProcessor::processorTask(ThreadConfig* config)
435{
436 SingleProducerSingleConsumerList<ReadPack*>* input = config->getLeftInput();
437 while(true) {
438 if(config->canBeStopped()){
439 break;
440 }
441 while(input->canBeConsumed()) {
442 ReadPack* data = input->consume();
443 processSingleEnd(data, config);
444 }
445 if(input->isProducerFinished()) {
446 if(!input->canBeConsumed()) {
447 if(mOptions->verbose) {
448 string msg = "thread " + to_string(config->getThreadId() + 1) + " data processing completed";
449 loginfo(msg);
450 }
451 break;
452 }
453 } else {
454 std::unique_lock<std::mutex> lk(mBackpressureMtx);
455 mBackpressureCV.wait_for(lk, std::chrono::milliseconds(1));
456 }
457 }
458 input->setConsumerFinished();
459
460 if(mFinishedThreads.fetch_add(1, std::memory_order_release) + 1 == mOptions->thread) {
461 if(mLeftWriter)
462 mLeftWriter->setInputCompleted();
463 if(mFailedWriter)
464 mFailedWriter->setInputCompleted();
465 }
466
467 if(mOptions->verbose) {
468 string msg = "thread " + to_string(config->getThreadId() + 1) + " finished";
469 loginfo(msg);
470 }
471}
472
473void SingleEndProcessor::writerTask(WriterThread* config)
474{

Callers

nothing calls this directly

Calls 9

loginfoFunction · 0.85
getLeftInputMethod · 0.80
canBeStoppedMethod · 0.80
canBeConsumedMethod · 0.80
consumeMethod · 0.80
isProducerFinishedMethod · 0.80
getThreadIdMethod · 0.80
setConsumerFinishedMethod · 0.80
setInputCompletedMethod · 0.80

Tested by

no test coverage detected