#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class threadManager; class algoThread; class subThread; class detDataManager; class triggerManager; class backEndManager; class sncodeCls { public: struct snPack { unsigned long long timecode; std::string sn; int startpos; }; QListsnWaittingVec; QListsnResList; std::string snErrorsnError = "snErrNoSn"; int tcpStartPos=0; bool clearSameSnRequestData(); void checkSnFromWaittingVec(QByteArray byte); std::string readSnFromQByteArray(QByteArray byte, int dmPos, bool highLowConversion, bool clearAfterRead, long long timeCode, int Size = -1); QString snHex(QString sn); std::string getData(unsigned long long timeCode); std::string waitForSn(unsigned long long timeCode, int timeOut=1000); sncodeCls(); }; class threadManager : public QThread { Q_OBJECT public: bool initFlag = false; threadManager(); sqlManager* sql; imgSaveThreadManager* _imgSaveThreadManager; triggerManager* _triggerManager; handleAiModelManager* _handleAiModelManager; QQueue> detDataQueue; autoDelete* autoDeleteThread; void initialization(backEndManager* _backEndManagerIn); void run(); void stop() { runFlag = false; this->terminate(); } void resultHandle(std::shared_ptr ); void addTask(std::shared_ptr ); sncodeCls snDatas; ~threadManager(); QMutex queueMutex; QMutex insertQueueMutex; QQueue>insertQueue; void process(); private: backEndManager* _backEndManager; std::list> waitImgData;//等待图片 std::list> processData;//处理中 std::list> resultData;//等待结果 std::unordered_map> algoFutures; std::unordered_map> resultFutures; std::chrono::seconds zeroSec = std::chrono::seconds(0); std::unordered_map>::iterator futrueIte; bool runFlag = true; QList>imgWaitList; std::vector>deleteVec; signals: }; #pragma once