C++中的线程类

//thread.h
#ifndef __THREAD_H__
#define __THREAD_H__

class Thread
{
public:
	Thread();
	virtual ~Thread();

protected:
	pthread_t m_nThreadID;
	int m_bTerminated;
	int m_bFreeOnTerminate;
	int m_bIsActive;

	static void* ThreadProc( void* lpParameter );

public:
	virtual int Start( int nPriority = -1, int nPolicy = -1 );
	virtual int Stop();

	virtual void Execute() = 0;
};
#endif //__THREAD_H__

//thread.cpp
Thread::Thread()
{
	m_bTerminated = 0;
	m_bFreeOnTerminate = 0;
	m_bIsActive = -1;
}
Thread::~Thread()
{
}
void* Thread::ThreadProc( void* lpParameter )
{
	Thread* pThread = (Thread*)lpParameter;
	
	if( !pThread->m_bTerminated )
	{
		pThread->Execute();
	}

	delete pThread;
	pthread_exit( NULL );

	return 1;
}

int hread::Start( int AnPriority, int AnPolicy )
{
	m_bTerminated = 0;
	int Result;

	pthread_attr_t attr;
	sched_param param;
	
	pthread_attr_init( &attr );
	if( -1 != AnPolicy)
	{
		pthread_attr_setschedpolicy( &attr, AnPolicy );	
	}

	pthread_attr_getschedparam( &attr, ¶m );
	
	if( -1 != AnPriority )
	{
		param.sched_priority = AnPriority;
	}

	pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_DETACHED);	
	pthread_attr_setschedparam( &attr, ¶m );

	Result = pthread_create(&m_nThreadID, &attr, &ThreadProc, this );

	pthread_attr_destroy(&attr);
	if(Result != 0)
	{
		return -1;
	}
	usleep(1000);

	if( Result > 0 )
		return -1;
	else 	
		return 0;
}

int Thread::Stop()
{
	m_bTerminated = -1;
	m_bIsActive = -1;
	return 0;
}

#ifndef _PEERTHREAD_
#define _PEERTHREAD_

class PeerThread:public Thread
{

public:
	PeerThread();
	~PeerThread();
  	 virtual void Execute()
	{
		while(!m_bTerminated)
		{
			//do ...........
		}
	}
};
#endif

//main.cpp
int main()
{
	PeerThread peer;
	peer.start();
	peer.stop();
}


主要是用静态成员函数不能访问私有变量,这里,可以看看

 static void* ThreadProc( void* lpParameter );
 virtual int Start( int nPriority = -1, int nPolicy = -1 );
 virtual void Execute() = 0;

这三个函数的实现有明白了,

http://www.linuxselfhelp.com/HOWTO/C++Programming-HOWTO-18.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值