#ifndef QtToWebFunction_H #define QtToWebFunction_H #include #include #include #include #include #include #include #include #include "MessageHandle.h" struct QtToWebData { QtToWebData() { cmd = 0; iState = 0; message = ""; data = ""; } int cmd; int iState; QString message; QString data; }; class QtToWebThread { public: QtToWebThread(); ~QtToWebThread(); void threadFunction(); private: std::atomic m_running; // 控制线程是否继续运行的标志 std::thread m_Thread; // 子线程 }; class QtToWebFunction { public: // 获取单例实例的公共静态方法 static QtToWebFunction& getInstance(); void qt2web(QtToWebData& data) { std::lock_guard lock(m_mutex); // 保护共享资源 m_data.emplace_back(data); } void qt2web(int cmd, int iState, QString message = "", QString data = "") { std::lock_guard lock(m_mutex); // 保护共享资源 QtToWebData d; d.cmd = cmd; d.iState = iState; d.message = message; d.data = data; m_data.emplace_back(d); } // 从队列头部取出数据 bool dequeue(QtToWebData& result) { std::lock_guard lock(m_mutex); // 保护共享资源 if (!m_data.empty()) { result = m_data.front(); m_data.pop_front(); return true; } return false; } // 查看队列大小 size_t size() { std::lock_guard lock(m_mutex); // 保护共享资源 return m_data.size(); } // 检查队列是否为空 bool empty() { std::lock_guard lock(m_mutex); // 保护共享资源 return m_data.empty(); } private: QtToWebFunction(); ~QtToWebFunction(); std::deque m_data; // 使用 deque 存储数据 std::mutex m_mutex; // 互斥锁,确保线程安全 }; #endif // LogWindowUIFunction_H