A simple and easy-to-use C ++ Thread class

Source: Internet
Author: User

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

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.