14 void *(*f)(void *); //function point
15 void *a; //function arguments
18 ThrPool(int sz, bool blocking=true);
20 template<class C, class A> bool addObjJob(C *o, void (C::*m)(A), A a);
23 bool takeJob(job_t *j);
32 std::vector<pthread_t> th_;
34 bool addJob(void *(*f)(void *), void *a);
37 template <class C, class A> bool
38 ThrPool::addObjJob(C *o, void (C::*m)(A), A a)
41 class objfunc_wrapper {
46 static void *func(void *vvv) {
47 objfunc_wrapper *x = (objfunc_wrapper*)vvv;
49 void (C::*m)(A ) = x->m;
57 objfunc_wrapper *x = new objfunc_wrapper;
61 return addJob(&objfunc_wrapper::func, (void *)x);