TThreadExecutor

explicit parallelism


EnableThreadSafety();
TThreadExecutor p(4); // creates a thread-pool
p.Map(func, data);
	    

EnableImplicitMT(4);
TThreadExecutor p; // uses the existing thread-pool
p.Map(func, data);
	    

RDataFrame

implicit parallelism


EnableThreadSafety();
RDataFrame df(data);
df.Func().GetValue(); // runs sequentially
	    

EnableImplicitMT(4);
RDataFrame df(data);
df.Func().GetValue(); // uses the existing thread-pool
	    

TTreeProcessorMT

??? parallelism


EnableThreadSafety();
TTreeProcessorMT tp(data); // creates a thread-pool, can't specify size
tp.Process(func);
	    

EnableImplicitMT(4);
TTreeProcessorMT tp(data);
tp.Process(func); // uses the existing thread-pool