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