61 lines
941 B
C
61 lines
941 B
C
|
#ifndef __THREAD_H__
|
||
|
#define __THREAD_H__
|
||
|
|
||
|
#include <pthread.h>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
class Thread{
|
||
|
public:
|
||
|
Thread():mStop(false){
|
||
|
//perror("Thread comstruct\n");
|
||
|
};
|
||
|
virtual ~Thread(){
|
||
|
//perror("Thread discomstruct\n");
|
||
|
};
|
||
|
|
||
|
public:
|
||
|
static const int THREAD_EXIT = 0xff;
|
||
|
static const int THREAD_CONTINUE = 0xf0;
|
||
|
|
||
|
public:
|
||
|
pthread_t getTid(){
|
||
|
return mTid;
|
||
|
};
|
||
|
|
||
|
int run(){
|
||
|
if(pthread_create( &mTid, NULL, run, this ) != 0){
|
||
|
perror("create read thread failed!\n");
|
||
|
return -1;
|
||
|
}
|
||
|
if( pthread_detach( mTid ) ){
|
||
|
perror("detach read thread failed!\n");
|
||
|
return -1;
|
||
|
}
|
||
|
return 0;
|
||
|
};
|
||
|
|
||
|
virtual int loop(){
|
||
|
return THREAD_EXIT;
|
||
|
};
|
||
|
|
||
|
protected:
|
||
|
//threads
|
||
|
bool mStop;
|
||
|
|
||
|
private:
|
||
|
static void* run(void* arg){
|
||
|
Thread* t = (Thread*)arg;
|
||
|
while(1){
|
||
|
if( THREAD_EXIT == t->loop()) break;
|
||
|
}
|
||
|
//perror("Thread finish!\n");
|
||
|
return (void*)0;
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
pthread_t mTid;
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|