\hypertarget{classparadiseo_1_1smp_1_1_scheduler}{}\doxysection{paradiseo\+::smp\+::Scheduler$<$ E\+OT, Policy $>$ Class Template Reference}
\label{classparadiseo_1_1smp_1_1_scheduler}\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}


{\ttfamily \#include $<$scheduler.\+h$>$}

\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a73a5cf14c34dcbd08339504082cd1fda}{Scheduler}} (unsigned workers\+Nb)
\item 
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a84b118f77e28d50d71e2b08b2db8423c}{$\sim$\+Scheduler}} ()
\item 
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_af1c0b7aceef7a5cb8e5e959736f11874}{operator()}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop)
\end{DoxyCompactItemize}
\doxysubsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a50cc51162245ca758e50704e1e052483}{operator()}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop, const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_linear_policy}{Linear\+Policy}} \&)
\item 
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_aacbf905de811e7a985bacb89435c6da4}{operator()}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, \mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop, const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_progressive_policy}{Progressive\+Policy}} \&)
\item 
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_abe2f7f58de797c9b8b4ca8d464b7a226}{apply\+Linear\+Policy}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&pop)
\item 
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_a8a5f5b39b455ae469ac74b2e99448b11}{apply\+Progressive\+Policy}} (\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&func, std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&pop, int id)
\item 
std\+::vector$<$ std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ $>$ \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler_abd4cfd0a104a325e0b4aec63ea1e291c}{sub\+Groups}} (\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&pop)
\end{DoxyCompactItemize}
\doxysubsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_aba9590b8107801bc325ad89bedd2e394}\label{classparadiseo_1_1smp_1_1_scheduler_aba9590b8107801bc325ad89bedd2e394}} 
std\+::vector$<$ std\+::thread $>$ {\bfseries workers}
\item 
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_aa74a0d339c55fce76868e37f4d8ae969}\label{classparadiseo_1_1smp_1_1_scheduler_aa74a0d339c55fce76868e37f4d8ae969}} 
std\+::vector$<$ std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ $>$ {\bfseries pop\+Packages}
\item 
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_ac888b57d95d55e5f221b2991c153ffba}\label{classparadiseo_1_1smp_1_1_scheduler_ac888b57d95d55e5f221b2991c153ffba}} 
std\+::atomic$<$ bool $>$ {\bfseries done}
\item 
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_af2793b25cc73c0019243ad20627cff26}\label{classparadiseo_1_1smp_1_1_scheduler_af2793b25cc73c0019243ad20627cff26}} 
std\+::vector$<$ unsigned $>$ {\bfseries planning}
\item 
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_af2e67d2b9da11b8e4a0a7529f4e87212}\label{classparadiseo_1_1smp_1_1_scheduler_af2e67d2b9da11b8e4a0a7529f4e87212}} 
std\+::vector$<$ std\+::atomic$<$ int $>$ $>$ {\bfseries is\+Working}
\item 
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a7e56bb965fa429fb311e31b313e10d5b}\label{classparadiseo_1_1smp_1_1_scheduler_a7e56bb965fa429fb311e31b313e10d5b}} 
std\+::vector$<$ std\+::mutex $>$ {\bfseries m}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$class E\+OT, class Policy = Linear\+Policy$>$\newline
class paradiseo\+::smp\+::\+Scheduler$<$ E\+O\+T, Policy $>$}

\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{Scheduler}} \+: Dispatch load between workers according to a policy.

Dispatch load between the specified number of workers according to a policy. 

\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a73a5cf14c34dcbd08339504082cd1fda}\label{classparadiseo_1_1smp_1_1_scheduler_a73a5cf14c34dcbd08339504082cd1fda}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!Scheduler@{Scheduler}}
\index{Scheduler@{Scheduler}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{Scheduler()}{Scheduler()}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{Scheduler}} (\begin{DoxyParamCaption}\item[{unsigned}]{workers\+Nb }\end{DoxyParamCaption})}

Constructor 
\begin{DoxyParams}{Parameters}
{\em workers\+Nb} & number of workers to perform tasks \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a84b118f77e28d50d71e2b08b2db8423c}\label{classparadiseo_1_1smp_1_1_scheduler_a84b118f77e28d50d71e2b08b2db8423c}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!````~Scheduler@{$\sim$Scheduler}}
\index{````~Scheduler@{$\sim$Scheduler}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{$\sim$Scheduler()}{~Scheduler()}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::$\sim$\mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{Scheduler}}}

Destructor 

\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_abe2f7f58de797c9b8b4ca8d464b7a226}\label{classparadiseo_1_1smp_1_1_scheduler_abe2f7f58de797c9b8b4ca8d464b7a226}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!applyLinearPolicy@{applyLinearPolicy}}
\index{applyLinearPolicy@{applyLinearPolicy}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{applyLinearPolicy()}{applyLinearPolicy()}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::apply\+Linear\+Policy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func,  }\item[{std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&}]{pop }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Apply an unary functor on a sub-\/group of population 
\begin{DoxyParams}{Parameters}
{\em func} & unary functor \\
\hline
{\em pop} & reference to the sub-\/group \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a8a5f5b39b455ae469ac74b2e99448b11}\label{classparadiseo_1_1smp_1_1_scheduler_a8a5f5b39b455ae469ac74b2e99448b11}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!applyProgressivePolicy@{applyProgressivePolicy}}
\index{applyProgressivePolicy@{applyProgressivePolicy}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{applyProgressivePolicy()}{applyProgressivePolicy()}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::apply\+Progressive\+Policy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func,  }\item[{std\+::vector$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $\ast$ $>$ \&}]{pop,  }\item[{int}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Apply an unary functor on a sub-\/group of population 
\begin{DoxyParams}{Parameters}
{\em func} & unary functor \\
\hline
{\em pop} & reference to the sub-\/group \\
\hline
{\em id} & id of the thread \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_af1c0b7aceef7a5cb8e5e959736f11874}\label{classparadiseo_1_1smp_1_1_scheduler_af1c0b7aceef7a5cb8e5e959736f11874}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!operator()@{operator()}}
\index{operator()@{operator()}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::operator() (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func,  }\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop }\end{DoxyParamCaption})}

Start an unary functor on workers on all the pop 
\begin{DoxyParams}{Parameters}
{\em func} & unary functor \\
\hline
{\em pop} & reference to the population \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_a50cc51162245ca758e50704e1e052483}\label{classparadiseo_1_1smp_1_1_scheduler_a50cc51162245ca758e50704e1e052483}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!operator()@{operator()}}
\index{operator()@{operator()}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::operator() (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func,  }\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop,  }\item[{const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_linear_policy}{Linear\+Policy}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Perform scheduling with a linear policy \mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_aacbf905de811e7a985bacb89435c6da4}\label{classparadiseo_1_1smp_1_1_scheduler_aacbf905de811e7a985bacb89435c6da4}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!operator()@{operator()}}
\index{operator()@{operator()}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy $>$ \\
void \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::operator() (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_u_f}{eo\+UF}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} \&, void $>$ \&}]{func,  }\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop,  }\item[{const \mbox{\hyperlink{structparadiseo_1_1smp_1_1_progressive_policy}{Progressive\+Policy}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Perform scheduling with a linear policy \mbox{\Hypertarget{classparadiseo_1_1smp_1_1_scheduler_abd4cfd0a104a325e0b4aec63ea1e291c}\label{classparadiseo_1_1smp_1_1_scheduler_abd4cfd0a104a325e0b4aec63ea1e291c}} 
\index{paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}!subGroups@{subGroups}}
\index{subGroups@{subGroups}!paradiseo::smp::Scheduler$<$ EOT, Policy $>$@{paradiseo::smp::Scheduler$<$ EOT, Policy $>$}}
\doxysubsubsection{\texorpdfstring{subGroups()}{subGroups()}}
{\footnotesize\ttfamily template$<$class E\+OT , class Policy  = Linear\+Policy$>$ \\
std\+::vector$<$std\+::vector$<$\mbox{\hyperlink{struct_dummy}{E\+OT}}$\ast$$>$ $>$ \mbox{\hyperlink{classparadiseo_1_1smp_1_1_scheduler}{paradiseo\+::smp\+::\+Scheduler}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}}, \mbox{\hyperlink{structboost_1_1numeric_1_1interval__lib_1_1policies}{Policy}} $>$\+::sub\+Groups (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classeo_pop}{eo\+Pop}}$<$ \mbox{\hyperlink{struct_dummy}{E\+OT}} $>$ \&}]{pop }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}

Create sub-\/groups with similar size from a population. 
\begin{DoxyParams}{Parameters}
{\em pop} & reference to the pop \\
\hline
\end{DoxyParams}


The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
smp/src/scheduler.\+h\item 
smp/src/scheduler.\+cpp\end{DoxyCompactItemize}
