类内线程 接口类 IThread 实现
来源:互联网 发布:数据冗余类型 编辑:程序博客网 时间:2024/04/19 09:32
/***************************************************************
* NAME : IThread.h
* FUNCTION : 类内线程 接口类
* PROGRAMMED : Ming_zhang
* DATE(ORG) : July 28 2011
* PROJECT : MTL
* OS : Windows XP
* HISTORY :
* ID --- DATE -----------NOTE-------------------------------
* 00
***************************************************************/
#ifndef _ITHREAD_H_
#define _ITHREAD_H_
/***********************Global Variable Declare***************/
//#define -1;
//////////////////////////////////////////////////////////////
/************************INCLUDE FILES*************************/
//#pragma warning (disable : 4786)
//#include <iostream>
//#include <string>
//#include <map>
//using namespace std;
///////////////////////////////////////////////////////////////
/***************************************************************
* NAME : IThread
* BASE CLASS NAME :
* FUNCTION :
* Interface :
***************************************************************/
class IThread
{
public:
// Constructors & Destructor
IThread();
virtual ~IThread();
int Thread_Create(); //线程创建函数
const CString & Thread_ErrInfo()
{
return m_sErrInfo;
}
// Interface
public:
protected:
static unsigned long _stdcall Therad_Enter(void *lpvoid );//线程入口函数
private:
virtual int Thread_Main() = 0; //线程处理函数
virtual int Thread_BefMain(); //线程处理函数 前处理函数
virtual int Thread_AftMain(); //线程处理函数 后处理函数
virtual int Thread_ErrMain(); //线程处理函数 错误处理函数
protected:
CString m_sErrInfo; //错误信息
HANDLE m_hThread; //线程句柄
DWORD m_nThreadID; //线程ID
// Attributes
private:
// Operations
// Attributes
};
#endif;
/***************************************************************
* NAME : IThread.cpp
* FUNCTION :
* PROGRAMMED : Ming_zhang
* DATE(ORG) : July 28 2011
* PROJECT : MTL
* OS : Windows XP
* HISTORY :
* ID --- DATE -----------NOTE-------------------------------
* 00
***************************************************************/
/************************INCLUDE FILES*************************/
#include "stdafx.h"
#include "IThread.h"
//#include <string>
//using namespace std;
///////////////////////////////////////////////////////////////
IThread::IThread()
{
}
IThread::~IThread()
{
}
/********************************************************************
* NAME : Therad_Enter
* FUNCTION :
* PARAMETER :
* RETURN :
* PROGRAMMER : Ming zhang
* DATE(ORG) : July 28 2011
* UPDATE :
* MEMO :
********************************************************************/
unsigned long _stdcall IThread::Therad_Enter(void *lpvoid )
{
IThread* pThis = (IThread*)lpvoid;
int nRet = 0;
if(1==pThis->Thread_BefMain()) //线程执行之前做一些操作
{
if(1==pThis->Thread_Main()) //执行线程
pThis->Thread_AftMain();//线程成功执行完后执行一些操作
else
pThis->Thread_ErrMain();//线程执行错误后执行一些操作
}
return 1;
}
/********************************************************************
* NAME : Thread_BefMain
* FUNCTION : Thread_Main运行之前提供处理机会给子类.
* PARAMETER :
* RETURN : 1: 可以接着运行Thread_Main.0: 不可以接着运行Thread_Main
* PROGRAMMER : Ming zhang
* DATE(ORG) : July 28 2011
* UPDATE :
* MEMO :
********************************************************************/
int IThread::Thread_BefMain() //线程处理函数
{
return 1;
}
/********************************************************************
* NAME : Thread_Main
* FUNCTION : 线程运行主函数
* PARAMETER :
* RETURN :
* PROGRAMMER : Ming zhang
* DATE(ORG) : July 28 2011
* UPDATE :
* MEMO :
********************************************************************/
int IThread::Thread_Main()
{
return 1;
}
/********************************************************************
* NAME : Thread_AftMain
* FUNCTION : 在线程运行之后做一些操作
* PARAMETER :
* RETURN :
* PROGRAMMER : Ming zhang
* DATE(ORG) : July 28 2011
* UPDATE :
* MEMO :
********************************************************************/
int IThread::Thread_AftMain()
{
return 1;
}
/********************************************************************
* NAME : Thread_ErrMain
* FUNCTION : 错误处理函数
* PARAMETER :
* RETURN :
* PROGRAMMER : Ming zhang
* DATE(ORG) : July 28 2011
* UPDATE :
* MEMO :
********************************************************************/
int IThread::Thread_ErrMain()
{
return 1;
}
/********************************************************************
* NAME : Thread_Create
* FUNCTION : 创建 类内线程
* PARAMETER :
* RETURN : 0 失败, 1 成功
* PROGRAMMER : Ming zhang
* DATE(ORG) : July 28 2011
* UPDATE :
* MEMO :
********************************************************************/
int IThread::Thread_Create()
{
m_hThread = CreateThread(NULL, 0,Therad_Enter, this,NULL , &m_nThreadID);
if(m_hThread==NULL)
{
m_sErrInfo.Format("创建线程失败 [%d]!",GetLastError());
return 0;
}
return 1;
}
- 类内线程 接口类 IThread 实现
- BREW-IThread接口
- 匿名内部类实现接口,继承类
- java接口和类(十)内部类实现接口及匿名内部类
- 接口继承接口,类内接口
- 类内线程
- 自定义类MyThread 实现Runnable接口,主函数创建5个线程,自定义线程类的构造函数输出 创建线程X * run方法内统计每个线程 一共6次
- 第二种:自定义类MyThread 实现Runnable接口,主函数创建5个线程,自定义线程类的构造函数输出 创建线程X * run方法内统计每个线程 一共6次
- 内部类实现一个接口与外围类实现这个接口的区别
- 线程的初步理解,生命周期,实现方法,Thread类,Runnable接口,Callable接口线程池
- Java核心内库-线程-通过实现Runnable接口的方式创建并启动线程
- 接口、抽象类、内部类
- 抽象类,接口,内部类
- 接口、抽象类、内部类
- 抽象类、接口、内部类
- 接口,抽象类,内部类
- 抽象类和接口的区别,内部类引用外部方法final参数,守护线程和用户线程
- JAVA中通过实现Runnable接口来创建线程类
- oracle分页
- c++里关于cerr,clog,cout三者的区别
- ajax jquery springmvc 级联下拉框
- BASH语法详解
- strcpy ,strncpy ,strlcpy地用法
- 类内线程 接口类 IThread 实现
- 对于不允许使用开源标签进行select选中的js替代方法
- socket编程—TCP/IP
- Javascript类-构造方法和原型方法的区别
- Session过滤器
- 据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗?
- vi快捷键
- 芯故事 心感动:英特尔企业文化的力量
- java 读取配置文件(一)