A simple and easy-to-use C ++ Thread class
Code structure
Code 2
1. threadobject. h
/************************************************************************* > File Name: threadobject.h > Author: wangzhicheng > Mail: 2363702560@qq.com > Created Time: Sat 07 Feb 2015 10:13:33 PM WST ************************************************************************/#ifndef THREADOBJECT_www.bkjia.com#define THREADOBJECT_H#include
#include
#include
#include
#include
#include
using namespace std;/* *abstract thread class * */class Threadobject {private:pthread_t mTid;string mName;protected:virtual void do_something(void) = 0; // the real function which thread need to executepublic:Threadobject();~Threadobject();void setname(const string &);const string& getname() const;void run(void);void join(void);friend void *thread(void *);};/* * user thread class * */class Userthread:public Threadobject {protected:virtual void do_something(void);public:Userthread();~Userthread();};#endif
2. threadobject. cpp
/************************************************************************* > File Name: threadobject.cpp > Author: wangzhicheng > Mail: 2363702560@qq.com > Created Time: Sat 07 Feb 2015 10:32:14 PM WST ************************************************************************/#include "threadobject.h"void *thread(void *arg);Threadobject::Threadobject() {}Threadobject::~Threadobject() {}void Threadobject::run() {pthread_create(&this->mTid, NULL, thread, this);}void Threadobject::join() {pthread_join(this->mTid, NULL);}void Threadobject::setname(const string &name) {this->mName = name;}const string& Threadobject::getname() const {return this->mName;}void *thread(void *arg) {Threadobject *thread = static_cast
(arg);thread->do_something();return NULL;}Userthread::Userthread() {}Userthread::~Userthread() {}void Userthread::do_something(void) {cout << this->getname() << endl;}
3. main. cpp
/************************************************************************* > File Name: main.cpp > Author: wangzhicheng > Mail: 2363702560@qq.com > Created Time: Sun 08 Feb 2015 07:53:38 PM WST ************************************************************************/#include "threadobject.h"int main() {Userthread userthread1, userthread2;userthread1.setname("userthread1");userthread2.setname("userthread2");userthread1.run();userthread2.run();userthread1.join();userthread2.join();return 0;}
4. makfile
CC=g++all:$(CC) -g -o main main.cpp threadobject.cpp threadobject.h -lpthread
Three programs run