一 代码结构
二 代码
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_H
#define THREADOBJECT_H
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <iostream>
#include <string>
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 execute
public:
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<Threadobject *>(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
三 程序运行截图