码迷,mamicode.com
首页 > 编程语言 > 详细

一种简单易用的C++线程类

时间:2015-02-08 20:47:08      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

一 代码结构

技术分享

二 代码

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

三 程序运行截图

技术分享

一种简单易用的C++线程类

标签:

原文地址:http://blog.csdn.net/wangzhicheng1983/article/details/43644599

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!