15 #include <boost/function.hpp>
16 #include <boost/shared_ptr.hpp>
17 #include <boost/noncopyable.hpp>
19 #include <tbb/mutex.h>
20 #include <tbb/tbb_thread.h>
21 #include <tbb/compat/condition_variable>
22 #include <tbb/spin_mutex.h>
23 #include <tbb/atomic.h>
36 typedef boost::shared_ptr<ThreadInfo>
Ptr;
37 typedef std::list<Ptr>
List;
59 typedef boost::shared_ptr<CallbackInterface>
Ptr;
68 virtual std::string label()
const;
71 virtual void run() = 0;
74 virtual void cancel();
77 virtual bool valid()
const;
83 const std::string& label,
90 virtual std::string label()
const;
93 static void cleanup();
96 virtual void setWarnTime(
double seconds);
97 virtual void setWarnTime(
double seconds, std::ostream& output);
100 virtual void printInfo(std::ostream&,
size_t width=0)
const;
103 virtual size_t totalNumberOfCallbacks()
const;
106 virtual unsigned size()
const;
109 virtual size_t numExecuting()
const;
112 virtual unsigned maxTasks()
const;
116 virtual void setMaxTasks(
unsigned tasks,
bool wait=
true);
121 void shutdown(
bool wait =
true);
124 virtual void clear(
bool wait =
true);
127 virtual void add_back(
const Callback&,
const std::string& label =
"");
130 virtual void add_front(
const Callback&,
const std::string& label =
"");
156 virtual bool runOne(
bool block=
false,
ThreadInfo* info=0);
161 virtual void runAll(
bool useThisThread=
false);
177 typedef std::list<Record>
List;
188 typedef tbb::interface5::unique_lock<Mutex>
Lock;
206 typedef std::multimap<double, std::ostream*, std::greater<double> >
StreamMap;