ra4_draw  4bd0201e3d922d42bd545d4b045ed44db33454a4
process.cpp
Go to the documentation of this file.
1 #include "core/process.hpp"
2 
3 #include "core/utilities.hpp"
4 
5 using namespace std;
6 
7 set<unique_ptr<Baby> > Process::baby_pool_{};
8 mutex Process::mutex_{};
9 
10 set<Baby*> Process::Babies() const{
11  lock_guard<mutex> lock(mutex_);
12  set<Baby*> babies;
13  for(const auto &baby: baby_pool_){
14  const auto &procs = baby->processes_;
15  if(procs.find(this) != procs.end()){
16  babies.insert(baby.get());
17  }
18  }
19  return babies;
20 }
21 
23  lock_guard<mutex> lock(mutex_);
24  auto baby_ptr_iter = baby_pool_.begin();
25  while(baby_ptr_iter != baby_pool_.end()){
26  auto current_iter = baby_ptr_iter++;
27  Baby &baby = *(current_iter->get());
28  baby.processes_.erase(this);
29  if(baby.processes_.size() == 0){
30  baby_pool_.erase(current_iter);
31  }
32  }
33 }
static std::mutex mutex_
Definition: process.hpp:52
Abstract base class for access to ntuple variables.
Definition: baby.hpp:16
STL namespace.
static std::set< std::unique_ptr< Baby > > baby_pool_
Definition: process.hpp:51
~Process()
Definition: process.cpp:22
std::set< Baby * > Babies() const
Definition: process.cpp:10
std::set< const Process * > processes_
Definition: baby.hpp:47