结合 异常捕获体系的 线程基类封装 (一)

原创 2012年03月30日 14:29:44

//////////////////////////////////////////////////////////////////////
//
// Thread.h
//
//

 

#ifndef __THREAD_H__
#define __THREAD_H__


//////////////////////////////////////////////////
// include files
//////////////////////////////////////////////////
#include "Type.h"

 


//当定义此宏时,所有线程将只执行一次后就推出。
//#define _EXEONECE 10

//////////////////////////////////////////////////////////////////////
//
// class Thread
//
// POSIX Thread Class
//
//////////////////////////////////////////////////////////////////////

class Thread
{

//////////////////////////////////////////////////
// constants
//////////////////////////////////////////////////
public :
 
 enum ThreadStatus
 {
  READY ,  // 当前线程处于准备状态
  RUNNING , // 处于运行状态
  EXITING , // 线程正在退出
  EXIT  // 已经退出
 };
 

//////////////////////////////////////////////////
// constructor and destructor
//////////////////////////////////////////////////

public :

 // constructor
 Thread ( ) ;

 // destructor
 virtual ~Thread () ;


//////////////////////////////////////////////////
// public methods
//////////////////////////////////////////////////

public :

 VOID start () ;
 
 virtual VOID stop () ;

 VOID exit ( VOID * retval = NULL ) ;

 virtual VOID run () ;


//////////////////////////////////////////////////
//
//////////////////////////////////////////////////
public :
 // get thread identifier
 TID getTID () { return m_TID; }
 
 // get/set thread's status
 ThreadStatus getStatus () { return m_Status; }
 VOID setStatus ( ThreadStatus status ) { m_Status = status; }
 

//////////////////////////////////////////////////
// data members
//////////////////////////////////////////////////

private :

 // thread identifier variable
 TID m_TID;
 
 // thread status
 ThreadStatus m_Status;

#if defined(__WINDOWS__)
 HANDLE m_hThread ;
#endif

};

extern uint g_QuitThreadCount ;

#if defined(__LINUX__)
VOID * MyThreadProcess ( VOID * derivedThread ) ;
#elif defined(__WINDOWS__)
DWORD WINAPI MyThreadProcess(  VOID* derivedThread ) ;
#endif

#endif

相关文章推荐

从零开始写C# MVC框架之--- 定义基类控制器、实现全局异常捕获

定义基类控制器的好处:把一些公用的信息抽象出来供继承的子类使用,公用异常捕获方法,登录信息失效后的重定向跳转等等。 定义BaseController和BaseAdminController,Bas...

C++异常(3) - 捕获基类与子类的异常

如果基类和子类都被做为异常捕获,则子类的catch代码块必须出现在基类之前。 如果把基类放在前面,则子类的catch代码块永远都不会被调用。 例如,下面程序打印“Caught Base Except...
  • big_bit
  • big_bit
  • 2016年09月01日 15:51
  • 273

thrift之TTransport类体系原理及源码详细解析1-类结构和抽象基类

本章主要介绍Thrift的传输层功能的实现,传输的方式多种多样,可以采用压缩、分帧等,而这些功能的实现都是相互独立,和上一章介绍的协议类实现方式比较雷同,还是先看看这部分的类关系图,如下: ...

thrift之TServer类体系原理及源码详细解析之服务器基类TServer

这一部分主要实现了底层IO通信,还涉及到通信服务器的堵塞、非堵塞、单线程、多线程等运行模式,所以实现比较复杂。这一部分涉及到的类的关系图如下: 由上面的类关系图可以看出,这一部分的类关系比较复杂...

C++ 虚基类问题、继承体系中的构造函数执行过程。(

本篇博客是做了网上的一个题目,然后总结而来的,题目并不难,关键是你能否真正理解其中的过程。   解题思路:   (1)不能简单的认为“先执行基类构造函数,再执行子类构造函数” (2)更本上讲...

[Muduo网络库源码分析] (4) base/Exception_cc_h_带 stack trace 的异常基类

带 stack trace 的异常基类实现:Exception类功能:实现对boost异常类的封装,可以有效存储异常知识点: int backtrace(void **buffer, int size...

MVP封装成基类结合retrofit和Rxjava

导入依赖 compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.7...
  • thw_m
  • thw_m
  • 2017年12月05日 21:27
  • 51

MVP封装成基类结合retrofit和Rxjava

导入依赖 compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.7' c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:结合 异常捕获体系的 线程基类封装 (一)
举报原因:
原因补充:

(最多只允许输入30个字)