Cleanups
[invirt/third/libt4.git] / rpc / thr_pool.h
index 4427aee..4ea1bd4 100644 (file)
@@ -6,57 +6,23 @@
 
 #include "fifo.h"
 
 
 #include "fifo.h"
 
+typedef std::function<void()> job_t;
+
 class ThrPool {
        public:
 class ThrPool {
        public:
-               struct job_t {
-                       void (*f)(void *); //function point
-                       void *a; //function arguments
-               };
-
-               ThrPool(int sz, bool blocking=true);
+               ThrPool(size_t sz, bool blocking=true);
                ~ThrPool();
                ~ThrPool();
-               template<class C, class A> bool addObjJob(C *o, void (C::*m)(A), A a);
-               void waitDone();
 
 
-               bool takeJob(job_t *j);
+               bool addJob(const job_t &j);
 
        private:
 
        private:
-               int nthreads_;
+        size_t nthreads_;
                bool blockadd_;
 
                bool blockadd_;
 
-
                fifo<job_t> jobq_;
                std::vector<std::thread> th_;
 
                fifo<job_t> jobq_;
                std::vector<std::thread> th_;
 
-               bool addJob(void (*f)(void *), void *a);
+        void do_worker();
 };
 
 };
 
-template <class C, class A> bool 
-ThrPool::addObjJob(C *o, void (C::*m)(A), A a)
-{
-
-       class objfunc_wrapper {
-               public:
-                       C *o;
-                       void (C::*m)(A a);
-                       A a;
-                       static void func(void *vvv) {
-                               objfunc_wrapper *x = (objfunc_wrapper*)vvv;
-                               C *o = x->o;
-                               void (C::*m)(A ) = x->m;
-                               A a = x->a;
-                               (o->*m)(a);
-                               delete x;
-                       }
-       };
-
-       objfunc_wrapper *x = new objfunc_wrapper;
-       x->o = o;
-       x->m = m;
-       x->a = a;
-       return addJob(&objfunc_wrapper::func, (void *)x);
-}
-
-
 #endif
 #endif
-