⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cthread.cpp

📁 sun Linux 下的网络编程
💻 CPP
字号:
   /*******************************************************************
   *	cThread.cpp
   *    DESCRIPTION:线程类的实现
   *
   *    AUTHOR:yyc
   *
   *    HISTORY:
   *
   *    DATE:2002-8-26
   *
   *******************************************************************/
   
#include "cThread.h"

#include <csignal>

using namespace yyc;

void *cThread::threadfunc(void *p)
{
	cThread *pthread=(cThread *)p;
	int ret=(*(pthread->m_pFunc))(pthread->m_pArgs);
	pthread->m_thrid=0;
	pthread_M_EXIT(NULL);
	return NULL;//no use
}

cThread::cThread()
{
	m_thrid=0;
	m_pArgs=NULL;
	m_pFunc=NULL;
}
cThread::cThread(FUNC_THREAD *pfunc)
{
	m_thrid=0;
	m_pArgs=NULL;
	m_pFunc=pfunc;
}

cThread::~cThread()
{
	detach();
}

bool cThread::operator==(const cThread& other) const
{
	return other.m_thrid==m_thrid;
}

bool cThread::operator!=(const cThread& other) const
{
    return !operator==(other);
}
//分离线程,不等待其结束
int cThread::detach()
{
	if(m_thrid!=0)
		pthread_M_DETACH(m_thrid);
	m_thrid=0;
	return 0;
}

//启动线程 0-OK 
int cThread::start(void * pArgs)
{
	int retv=0;
	if(m_thrid!=0) return 0;
	if(m_pFunc!=NULL)
	{
		m_pArgs=pArgs;
		pthread_M_CREATE(&retv,&m_thrid,threadfunc,(void *)this);
	}
	return retv;
}
//等待线程结束 0-OK
int cThread::join()
{
	int retv=0;
	pthread_t pid=m_thrid;
	if(pid!=0)
	{
		pthread_M_KILL(pid,SIGALRM);
		pthread_M_JOIN(pid,NULL);
	}
	return retv;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -