From 0ccefcbfab232127c8d9f5050100e177a972a65b Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 7 Dec 2018 17:02:44 +0000 Subject: [PATCH] Worker CPU thread for linux working --- CMakeLists.txt | 3 +++ bin/resource-monitor | Bin 30232 -> 36384 bytes include/cpu.h | 29 +++++++++++------------------ platform/linux/monitoring/cpu.cpp | 27 +++++++++++++++++++-------- src/main.cpp | 7 ++++++- 5 files changed, 39 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da01074..e6d833b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ set(LinuxDep ${Platform}/linux) set(Include ./include) +set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) include_directories(${Build}/ ${Include}) @@ -42,4 +43,6 @@ add_executable(${Build} ${PlatformDepSource} ) +target_link_libraries(${Build} ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(${Build} pthread) target_link_libraries(${Build} Threads::Threads) diff --git a/bin/resource-monitor b/bin/resource-monitor index 3c3b10e16718b14eb0ce2d8520d32be428b24b14..545aa941dd7cfe443501e663ee696ccf141106ee 100755 GIT binary patch literal 36384 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 Q4h2>m^j)6ya3qcY4FlGF%K!iX literal 30232 zcmeHweRN#KmFLqJ7QvPT*b`wxXgh`&h=p2~WjPp-EVbP2$hJ_+Mgy4VR(IR#pf6h8 zvP=T2MTXEQ0w+UeybdHLc-y?*LeY?w1=|4^ONy07lNb?erxTes?cRO!F?nw#?T@(f7@#x(}z%Ffl8Iwq9& z@C87fQEQxozaHaa<1FM06;9LZGyqkn&iqVR%=iL8D)$YhyWxe*Cr~sbNab>+V+%Az zpi!ptRIZ3FIq!y}rJ7Hm(5?DBnr^t@7OqdAvmDuGVx2BG(VPh%Cj%f&Nn=lf=;PDAV1rQHwDI5-+8ee@R5>ddNe$nJ~ff1WLK

%FG-6Upj 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 #include +#include class CPU { public: CPU(); - std::atomic CPU_PREVIOUS_IDLE; - std::atomic CPU_PREVIOUS_TOTAL; - std::atomic CPU_IDLE; - std::atomic CPU_TOTAL; + std::mutex CPU_Mutex; + int CPU_PREVIOUS_IDLE; + int CPU_PREVIOUS_TOTAL; + int CPU_IDLE; + int CPU_TOTAL; - std::atomic UPDATE_INTERVAL; // ms + int UPDATE_INTERVAL; // s void START_CPU_POLLING(); - static void CPU_POLL(); + static void CPU_POLL(CPU* cpu); void END_CPU_POLLING(); double CPU_PERCENT(); - virtual ~CPU(); + virtual ~CPU(); private: std::thread* m_pollThread; - std::atomic m_isPolling; + bool m_isPolling; }; -static CPU* instance; -static CPU* GetCPUInstance() { - if (instance == (void*)0) { - CPU cpu; - instance = &cpu; - return instance; - } - return instance; -} - +static CPU* CPU_Instance; diff --git a/platform/linux/monitoring/cpu.cpp b/platform/linux/monitoring/cpu.cpp index 3aec16b..cc1a537 100644 --- a/platform/linux/monitoring/cpu.cpp +++ b/platform/linux/monitoring/cpu.cpp @@ -9,26 +9,33 @@ CPU::CPU() { this->UPDATE_INTERVAL = 1000; this->m_isPolling = false; + std::cout << "CPU Class Instantated" << std::endl; } void CPU::START_CPU_POLLING() { if (this->m_isPolling) { return; } - std::thread t(&CPU::CPU_POLL); - this->m_pollThread = &t; this->m_isPolling = true; + std::thread* t = new std::thread(&CPU::CPU_POLL, this); + this->m_pollThread = t; std::cout << "Worker CPU thread started" << std::endl; } -void CPU::CPU_POLL() { - CPU* cpu = GetCPUInstance(); - while (cpu->m_isPolling) { +void CPU::CPU_POLL(CPU* cpu) { + std::cout << "From CPU Thread Start" << std::endl; + while (true) { + cpu->CPU_Mutex.lock(); + if (!cpu->m_isPolling) { + cpu->CPU_Mutex.unlock(); + return; + } cpu->CPU_PREVIOUS_IDLE++; cpu->CPU_PREVIOUS_TOTAL++; cpu->CPU_IDLE++; cpu->CPU_TOTAL++; - usleep(cpu->UPDATE_INTERVAL); + cpu->CPU_Mutex.unlock(); + sleep(1); } } @@ -37,15 +44,19 @@ void CPU::END_CPU_POLLING() { return; } this->m_isPolling = false; - usleep(this->UPDATE_INTERVAL + 5); m_pollThread->join(); delete m_pollThread; } double CPU::CPU_PERCENT() { + this->CPU_Mutex.lock(); + + this->CPU_Mutex.unlock(); return (double)this->CPU_TOTAL; } CPU::~CPU() { - CPU::m_pollThread->~thread(); + this->m_isPolling = false; + m_pollThread->join(); + delete m_pollThread; } diff --git a/src/main.cpp b/src/main.cpp index ac6fd0d..8eb5e17 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,12 +1,17 @@ #include #include +#include int main(int argc, char** argv) { - CPU* cpu = GetCPUInstance(); + CPU* cpu = new CPU(); + CPU_Instance = cpu; cpu->START_CPU_POLLING(); + usleep(1000000); while(1) { std::cout << cpu->CPU_PERCENT() << std::endl; + + sleep(1); } }