📄 cthread.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 + -