/*************************************************************************
> File Name: ThreadObject.h
> Author: wangzhicheng
> Mail: 2363702560@qq.com
> Created Time: 2017-01-06
> Brief: abstract thread class
************************************************************************/
#ifndef _THREAD_OBJECT_H_
#define _THREAD_OBJECT_H_
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
namespace threadobject
{
using namespace std;
/*
* brief abstract thread class
* */
class ThreadObject
{
private:
pthread_t tid;
protected:
virtual void do_something() = 0; // the real function which thread need to execute
public:
ThreadObject();
~ThreadObject();
bool run();
bool join();
friend void *thread(void *);
};
}
#endif
/*************************************************************************
> File Name: ThreadObject.cpp
> Author: wangzhicheng
> Mail: 2363702560@qq.com
> Created Time: 2017-01-06
> Brief: user thread class
************************************************************************/
#include "ThreadObject.h"
namespace threadobject
{
void *thread(void *arg);
ThreadObject::ThreadObject()
{
}
ThreadObject::~ThreadObject()
{
}
bool ThreadObject::run()
{
if(pthread_create(&this->tid, NULL, thread, this)) return false;
else return true;
}
bool ThreadObject::join()
{
if(pthread_join(this->tid, NULL)) return false;
else return true;
}
void *thread(void *arg)
{
ThreadObject *thread = static_cast<ThreadObject *>(arg);
thread->do_something();
return NULL;
}
}
Thread Class
最新推荐文章于 2022-11-24 11:52:17 发布