Files
cocosocket/cocosocket-client/WorkThread.cpp
beykery c80c23cc3c unity
2014-10-31 10:39:13 +08:00

39 lines
641 B
C++

#include "WorkThread.h"
#include "errno.h"
#include "BlockingQueue.h"
#include "Thread.h"
WorkThread::WorkThread()
{
this->q = new BlockingQueue<Thread>;
this->Start();
}
WorkThread::~WorkThread()
{
delete q;
}
void WorkThread::Run()
{
while (this->status != QUITED)
{
Thread* task = (Thread*) q->Poll();
if (task != NULL)
{
status = RUNNING;
task->Run();
delete task;
} else
{
this->status = IDLE;
sem_wait(this->sem); //等待添加新的task
}
}
}
int WorkThread::TaskCount()
{
return q->Size();
}