15 #ifndef IMPALA_UTIL_THREAD_H
16 #define IMPALA_UTIL_THREAD_H
18 #include <boost/bind.hpp>
19 #include <boost/function.hpp>
20 #include <boost/scoped_ptr.hpp>
21 #include <boost/thread.hpp>
22 #include <boost/ptr_container/ptr_vector.hpp>
61 Thread(
const std::string& category,
const std::string&
name,
const F& f)
66 template <
class F,
class A1>
67 Thread(
const std::string& category,
const std::string&
name,
const F& f,
const A1& a1)
72 template <
class F,
class A1,
class A2>
73 Thread(
const std::string& category,
const std::string&
name,
const F& f,
74 const A1& a1,
const A2& a2)
79 template <
class F,
class A1,
class A2,
class A3>
80 Thread(
const std::string& category,
const std::string&
name,
const F& f,
81 const A1& a1,
const A2& a2,
const A3& a3)
86 template <
class F,
class A1,
class A2,
class A3,
class A4>
87 Thread(
const std::string& category,
const std::string&
name,
const F& f,
88 const A1& a1,
const A2& a2,
const A3& a3,
const A4& a4)
93 template <
class F,
class A1,
class A2,
class A3,
class A4,
class A5>
94 Thread(
const std::string& category,
const std::string&
name,
const F& f,
95 const A1& a1,
const A2& a2,
const A3& a3,
const A4& a4,
const A5& a5)
boost::ptr_vector< Thread > threads_
All the threads grouped by this set.
ThreadGroup(CgroupsMgr *cgroups_mgr, const std::string &cgroup)
Thread(const std::string &category, const std::string &name, const F &f)
Status SetCgroup(const std::string &cgroup)
Thread(const std::string &category, const std::string &name, const F &f, const A1 &a1, const A2 &a2)
TODO: Consider allowing fragment IDs as category parameters.
MetricGroups may be organised hierarchically as a tree.
static void SuperviseThread(const std::string &name, const std::string &category, ThreadFunctor functor, Promise< int64_t > *thread_started)
static const int64_t UNINITIALISED_THREAD_ID
Thread(const std::string &category, const std::string &name, const F &f, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
void StartThread(const ThreadFunctor &functor)
Status StartThreadInstrumentation(MetricGroup *metrics, Webserver *webserver)
static const int64_t INVALID_THREAD_ID
const std::string category_
Name and category for this thread.
void InitThreading()
Initialises the threading subsystem. Must be called before a Thread is created.
Thread(const std::string &category, const std::string &name, const F &f, const A1 &a1)
boost::scoped_ptr< boost::thread > thread_
The actual thread object that runs the user's method via SuperviseThread().
void SetCgroupsMgr(CgroupsMgr *cgroups_mgr)
Status AddThread(Thread *thread)
CgroupsMgr * cgroups_mgr_
Cgroups manager for assigning threads in this group to cgroups. Not owned.
Thread(const std::string &category, const std::string &name, const F &f, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
Thread(const std::string &category, const std::string &name, const F &f, const A1 &a1, const A2 &a2, const A3 &a3)
boost::function< void()> ThreadFunctor
Function object that wraps the user-supplied function to run in a separate thread.