00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _util_group_thpthd_h
00029 #define _util_group_thpthd_h
00030
00031 #ifdef __GNUC__
00032 #pragma interface
00033 #endif
00034
00035 #include <pthread.h>
00036 #include <util/group/thread.h>
00037
00038 namespace sc {
00039
00042 class PthreadThreadGrp: public ThreadGrp {
00043 private:
00044 pthread_t *pthreads_;
00045 pthread_attr_t *attr_;
00046
00047 void init_attr();
00048 void init_priority(int, int);
00049 public:
00050 PthreadThreadGrp();
00051 PthreadThreadGrp(const PthreadThreadGrp&, int nthread = -1);
00052 PthreadThreadGrp(const Ref<KeyVal>&);
00053 ~PthreadThreadGrp();
00054
00055 int start_threads();
00056 int wait_threads();
00057 void add_thread(int i, Thread* t) { ThreadGrp::add_thread(i,t); }
00058 void add_thread(int i, Thread* t, int priority);
00059
00060 Ref<ThreadLock> new_lock();
00061
00062 ThreadGrp* clone(int nthread = -1);
00063 };
00064
00065 }
00066
00067 #endif
00068
00069
00070
00071
00072