50 lines
916 B
C++
50 lines
916 B
C++
#ifndef VRTHEAD_H
|
|
#define VRTHEAD_H
|
|
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <deque>
|
|
#include <thread>
|
|
#include <mutex>
|
|
#include <functional>
|
|
|
|
#include "IVrThreadPool.h"
|
|
#include "VrSimpleLog.h"
|
|
|
|
typedef std::function<void (void *)> ExecFinishFunc;
|
|
|
|
class VrThread
|
|
{
|
|
public:
|
|
VrThread(int index);
|
|
|
|
// 初始化任务
|
|
int Init();
|
|
|
|
// 执行任务
|
|
int ExecTask(ThreadExecFunc fExecFunc, void* pParam, ExecFinishFunc pExecFinishFunc, void* pFinishParam);
|
|
|
|
private:
|
|
void _ExecTask();
|
|
|
|
private:
|
|
|
|
int m_nIndex;
|
|
std::atomic<bool> m_bRuning;
|
|
|
|
// 执行
|
|
ThreadExecFunc m_fExecFunc;
|
|
void* m_pParam;
|
|
|
|
ExecFinishFunc m_fFinishFunc;
|
|
void* m_pFinishParam;
|
|
|
|
int m_nRet;
|
|
|
|
// 线程等待交互
|
|
std::mutex m_mutexExec;
|
|
std::condition_variable m_condExec;
|
|
};
|
|
|
|
#endif // VRTHEAD_H
|