X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/5fd8cc8409d0efadc07dfe8d6774ad9ff477663d..a4175b2e216a20b86cc872dea8a08005c60617a5:/rpc/thr_pool.h diff --git a/rpc/thr_pool.h b/rpc/thr_pool.h index 5095961..4427aee 100644 --- a/rpc/thr_pool.h +++ b/rpc/thr_pool.h @@ -1,17 +1,15 @@ -#ifndef __THR_POOL__ -#define __THR_POOL__ +#ifndef thr_pool_h +#define thr_pool_h -#include #include +#include #include "fifo.h" class ThrPool { - - public: struct job_t { - void *(*f)(void *); //function point + void (*f)(void *); //function point void *a; //function arguments }; @@ -23,18 +21,17 @@ class ThrPool { bool takeJob(job_t *j); private: - pthread_attr_t attr_; int nthreads_; bool blockadd_; fifo jobq_; - std::vector th_; + std::vector th_; - bool addJob(void *(*f)(void *), void *a); + bool addJob(void (*f)(void *), void *a); }; - template bool +template bool ThrPool::addObjJob(C *o, void (C::*m)(A), A a) { @@ -43,14 +40,13 @@ ThrPool::addObjJob(C *o, void (C::*m)(A), A a) C *o; void (C::*m)(A a); A a; - static void *func(void *vvv) { + 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; - return 0; } };