08面向对象编程风格

来源:互联网 发布:c语言 纸牌 编辑:程序博客网 时间:2024/06/10 19:01

1.Thread类图

2.代码

Thread.h#ifndef _THREAD_H_#define _THREAD_H_#include <pthread.h>class Thread{public:Thread();virtual ~Thread();void Start();void Join();void SetAutoDelete(bool autoDelete);private:static void* ThreadRoutine(void* arg);virtual void Run() = 0;pthread_t threadId_;bool autoDelete_;};#endif // _THREAD_H_

Thread.cpp#include "Thread.h"#include <iostream>using namespace std;Thread::Thread() : autoDelete_(false){cout<<"Thread ..."<<endl;}Thread::~Thread(){cout<<"~Thread ..."<<endl;}void Thread::Start(){pthread_create(&threadId_, NULL, ThreadRoutine, this);}void Thread::Join(){pthread_join(threadId_, NULL);}void* Thread::ThreadRoutine(void* arg){Thread* thread = static_cast<Thread*>(arg);thread->Run();if (thread->autoDelete_)delete thread;return NULL;}void Thread::SetAutoDelete(bool autoDelete){autoDelete_ = autoDelete;}
Thread_test.cpp#include "Thread.h"#include <unistd.h>#include <iostream>using namespace std;class TestThread : public Thread{public:TestThread(int count) : count_(count){cout<<"TestThread ..."<<endl;}~TestThread(){cout<<"~TestThread ..."<<endl;}private:void Run(){while (count_--){cout<<"this is a test ..."<<endl;sleep(1);}}int count_;};int main(void){/*TestThread t(5);t.Start();t.Join();*/TestThread* t2 = new TestThread(5);t2->SetAutoDelete(true);t2->Start();t2->Join();for (; ; )pause();return 0;}



阅读全文
1 0