📄 oamrunner.cc
字号:
#include "oamRunner.h"
OamRunner::OamRunner(){}
OamRunner::~OamRunner(){}
int OamRunner::run()
{
return 0;
}
bool OamRunner::stop()
{
return runner_m.stop();
}
bool OamRunner::start()
{
return runner_m.start(this);
}
bool OamRunner::suspend()
{
return runner_m.suspend();
}
bool OamRunner::resume()
{
return runner_m.resume();
}
bool OamRunner::wait()
{
return runner_m.wait();
}
pthread_t OamRunner::self()
{
return runner_m.self();
}
bool OamRunner::isRunning()
{
return runner_m.isRunning();
}
OamThreadRunner::OamThreadRunner():tid_m(0) , status_m(STOP)
{}
OamThreadRunner::~OamThreadRunner()
{
status_m = STOP;
}
bool OamThreadRunner::stop()
{
if (status_m != STOP)
{
pthread_cancel(this->self());
status_m = STOP;
return true;
}
return false;
}
bool OamThreadRunner::start(OamRunner * runner)
{
if (status_m == STOP &&
pthread_create(&tid_m , 0 , OamThreadRunner::threadFunc , runner) != 0)
{
return false;
}
if (status_m == STOP)
{
status_m = RUN;
}
return true;
}
bool OamThreadRunner::suspend()
{
return true;
}
bool OamThreadRunner::resume()
{
return true;
}
bool OamThreadRunner::wait()
{
return ((pthread_join(this->self() , 0) == 0)?true:false);
}
pthread_t OamThreadRunner::self()
{
return tid_m;
}
bool OamThreadRunner::isRunning()
{
pthread_testcancel();
return (status_m == STOP? false:true);
}
void * OamThreadRunner::threadFunc(void * args)
{
OamRunner * runner = (OamRunner *)args;
runner->run();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -