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

一 代码结构

二 代码

1. threadobject.h

/*************************************************************************
    > File Name: threadobject.h
    > Author: wangzhicheng
    > Mail: [email protected]
    > 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: [email protected]
    > 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: [email protected]
    > 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

三 程序运行截图

时间: 2024-10-14 11:00:07

一种简单易用的C++线程类的相关文章

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

一 代码结构 二 代码 1. posix_process.h /************************************************************************* > File Name: posix_process.h > Author: wangzhicheng > Mail: [email protected] > Created Time: Thu 12 Feb 2015 07:35:34 PM WST ***********

两种简单实现菜单高亮显示的JS类(转载)

两种简单实现菜单高亮显示的JS类 近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.记得当年写静态页时,为了实现高亮都是在每个页面加不同的样式,呵.高亮显示我觉得对于web前端来说,是比较常用到的效果,正好此次又要用到,特地整理出我所写的两种高亮类. 其实思路很简单,第一种方法是通过遍历链接组的href值,通过indexOf判断href值是否被包含在浏览器当前url值中.此方法有一定局限,比如对于iframe内的菜单是不能这样判断的; 第二种方法适用范围更广一样,实现思路

SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流

SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltStack提供了一个动态基础设施通信总线用于编排,远程执行.配置管理等等.SaltStack项目于2011年启动,年增长速度较快,五年期固定基础设施编制和配置管理的开源项目.SaltStack社区致力于保持盐项目集中.友好.健康.开放.  简单来说它的两大基础功能就是:配置管理.远程命令执行.剩下就是根据

头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)

flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/details/12855915     并且加入了自己的解析,以供之后的参考. 官网提供的demo包,包含了php,jsp,asp,aspx的demo. 1.Demo中,avatar.swf是执行上传的flash文件:default.jpg是默认显示的图片:demo.html是demo,可以直接复制里面

分享一个简单易用的RPC开源项目—Tatala

http://zijan.iteye.com/blog/2041894 这个项目最早(2008年)是用于一个网络游戏的Cache Server,以及一个电子商务的Web Session服务.后来不断增加新的功能,除了Java还支持C#,到现在已经可以用它来开发网络游戏的服务器.等过些日子我还会开源网络游戏的服务器源码. 关于性能,当时后台相应请求的效率是每秒10W次,现在我在自己的笔记本上测,只有一个客户端与服务器都在一个物理机上(CPU: i7-3610QM; RAM: 8G; OS: Win

OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用。

okhttp-OkGo 项目地址:jeasonlzy/okhttp-OkGo 简介:OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用.该库是封装了 okhttp 的网络框架,支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持 Https 和自签名证书,支持 cookie 的持久化和自动管理,支持四种缓存模式缓存网络数据,支持 301 和 302 重定向,扩展了

简单易用的Model加密本地存储方案

说明 1. 加密方案采用了策略设计模式(一种加密方案是一种策略) 2. 对一个Model进行存储而不进行NSCoding编码非常便利 3. 非常简单易用 4. 支持AES.DES.CAST加密 源码 https://github.com/YouXianMing/StoreValueEncryptStrategy // // ViewController.m // StoreValueEncryptStrategy // // Created by YouXianMing on 15/9/25.

c#简单易用的短信发送服务 悠逸企业短信服务

 悠逸企业短信发送服务,是一种比较简单易操作的短信发送服务,使用POST的方式,请求相应地址就可以实现短信发送功能 1 /// <summary> 2 /// 短信发送服务 3 /// </summary> 4 public class ShortMsgHelper 5 { 6 /// <summary> 7 /// 短信服务 账号 8 /// </summary> 9 private static string uid = ConfigurationMan

设计与开发一款简单易用的Web报表工具(支持常用关系数据及hadoop、hbase等)

EasyReport是一个简单易用的Web报表工具(支持Hadoop,HBase及各种关系型数据库),它的主要功能是把SQL语句查询出的行列结构转换成HTML表格(Table),并支持表格的跨行(RowSpan)与跨列(ColSpan).同时它还支持报表Excel导出.图表显示及固定表头与左边列的功能.总体架构如下图所示: 目录 开发环境(Development Environment) 安装与部署(Installation & Deployment) 从源代码安装(From Source Co