Linux线程创建以及回调函数的使用

来源:互联网 发布:加密软件破译系统 编辑:程序博客网 时间:2024/06/15 11:37

这段时间要实现一下使用深度学习分类来辅助现有算法。主要就是在主程序有需求的时候调用深度学习方法,并保证程序不卡死。然后等深度学习算法处理完成,再返回处理结果。

下面贴出相关简化后的代码。记录一下。

CDLProcess.h

#include <iostream>#include "pthread.h"using namespace std;class IDLProcessCallBack{//回调类,这里自定义所有回调函数public:virtual void OnDLProcessCallBack() = 0;};class CDLProcess{public:CDLProcess();~CDLProcess();public:int Initial(IDLProcessCallBack *_DLCallBack);void Process();private:IDLProcessCallBack *m_DLCallBack;pthread_t m_threadID;};

CDLProcess.cpp

#include "CDLProcess.h"void *thread_DLProcess(void *arg){CDLProcess *pDLProcess = (CDLProcess*)arg;pDLProcess->Process();pthread_exit((void*)0);return 0;}CDLProcess::CDLProcess(){}CDLProcess::~CDLProcess(){}int CDLProcess::Initial(IDLProcessCallBack *_DLCallBack){m_DLCallBack = _DLCallBack;if (pthread_create(&m_threadID, NULL, thread_DLProcess, (void*)this) != 0){printf("create thread of DLProcess failed! \n");return -1;}}void CDLProcess::Process(){//自定义处理过程while (true){printf("111\n");}}

main.cpp

#include "CDLProcess.h"using namespace std;class CProcessCallBack : public IDLProcessCallBack{void OnDLProcessCallBack();};void CProcessCallBack::OnDLProcessCallBack(){printf("22222\n");}int main(){CDLProcess DLProcess;CProcessCallBack aaa;DLProcess.Initial(&aaa);system("pause");return 0;}



原创粉丝点击