50 lines
965 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