Linux執行緒建立以及回撥函式的使用
阿新 • • 發佈:2018-12-31
這段時間要實現一下使用深度學習分類來輔助現有演算法。主要就是在主程式有需求的時候呼叫深度學習方法,並保證程式不卡死。然後等深度學習演算法處理完成,再返回處理結果。
下面貼出相關簡化後的程式碼。記錄一下。
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; }