|
@@ -1,8 +1,9 @@
|
|
#include "ThreadPool.h"
|
|
#include "ThreadPool.h"
|
|
|
|
|
|
-#include "spdlog/spdlog.h"
|
|
+#include "FmtLog/fmtlog.h"
|
|
#include "fmt/std.h"
|
|
#include "fmt/std.h"
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
* @brief Construct a new Thread Pool:: Thread Pool object
|
|
* @brief Construct a new Thread Pool:: Thread Pool object
|
|
* 构造函数,从这里创建线程,和Linux C的线程池不同,Linux C的线程池数组管理的是线程ID,
|
|
* 构造函数,从这里创建线程,和Linux C的线程池不同,Linux C的线程池数组管理的是线程ID,
|
|
@@ -20,7 +21,7 @@ ThreadPool::ThreadPool() :
|
|
m_threadMiniNum = 3;
|
|
m_threadMiniNum = 3;
|
|
m_threadAddNum = 2;
|
|
m_threadAddNum = 2;
|
|
m_threadMiniIdle = 2;
|
|
m_threadMiniIdle = 2;
|
|
- m_threadMaxIdle = 6;
|
|
+ m_threadMaxIdle = 4;
|
|
m_threadRunNum = 0;
|
|
m_threadRunNum = 0;
|
|
m_threadLiveNum = 0;
|
|
m_threadLiveNum = 0;
|
|
m_threadExitNum = 0;
|
|
m_threadExitNum = 0;
|
|
@@ -28,7 +29,7 @@ ThreadPool::ThreadPool() :
|
|
|
|
|
|
m_managerThread = std::thread(&ThreadPool::managerThread, this);
|
|
m_managerThread = std::thread(&ThreadPool::managerThread, this);
|
|
|
|
|
|
- SPDLOG_DEBUG("***** Hello ThreadPool *****");
|
|
+ FMTLOG_DEBUG("***** Hello ThreadPool *****");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -36,14 +37,14 @@ ThreadPool::ThreadPool() :
|
|
|
|
|
|
ThreadPool::~ThreadPool()
|
|
ThreadPool::~ThreadPool()
|
|
{
|
|
{
|
|
- SPDLOG_INFO("线程池正在退出...");
|
|
+ FMTLOG_INFO("线程池正在退出...");
|
|
|
|
|
|
{
|
|
{
|
|
std::unique_lock<std::mutex> lock(m_mutexTask);
|
|
std::unique_lock<std::mutex> lock(m_mutexTask);
|
|
m_stop = true;
|
|
m_stop = true;
|
|
}
|
|
}
|
|
|
|
|
|
- SPDLOG_INFO("通知所有工作线程退出...");
|
|
+ FMTLOG_INFO("通知所有工作线程退出...");
|
|
|
|
|
|
m_cond_Task.notify_all();
|
|
m_cond_Task.notify_all();
|
|
|
|
|
|
@@ -54,10 +55,10 @@ ThreadPool::~ThreadPool()
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
}
|
|
}
|
|
|
|
|
|
- SPDLOG_INFO("回收管理线程...");
|
|
+ FMTLOG_INFO("回收管理线程...");
|
|
|
|
|
|
m_managerThread.join();
|
|
m_managerThread.join();
|
|
- SPDLOG_INFO("===== 线程池退出完成 =====");
|
|
+ FMTLOG_INFO("===== 线程池退出完成 =====");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -108,7 +109,7 @@ void ThreadPool::worker()
|
|
|
|
|
|
std::stringstream ss;
|
|
std::stringstream ss;
|
|
ss << std::this_thread::get_id();
|
|
ss << std::this_thread::get_id();
|
|
- SPDLOG_DEBUG("线程ID:{}退出任务循环", ss.str());
|
|
+ FMTLOG_DEBUG("线程ID:{}退出任务循环", ss.str());
|
|
|
|
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -125,7 +126,7 @@ void ThreadPool::managerThread()
|
|
|
|
|
|
int num_idle = m_threadLiveNum.load() - m_threadRunNum.load();
|
|
int num_idle = m_threadLiveNum.load() - m_threadRunNum.load();
|
|
|
|
|
|
-
|
|
+
|
|
if ((num_idle < m_threadMiniIdle.load()) && (m_threadLiveNum.load() < m_threadMaxNum) )
|
|
if ((num_idle < m_threadMiniIdle.load()) && (m_threadLiveNum.load() < m_threadMaxNum) )
|
|
{
|
|
{
|
|
std::unique_lock<std::mutex> lock(m_mutexTask);
|
|
std::unique_lock<std::mutex> lock(m_mutexTask);
|
|
@@ -160,7 +161,7 @@ void ThreadPool::managerThread()
|
|
|
|
|
|
if(numAdd > 0)
|
|
if(numAdd > 0)
|
|
{
|
|
{
|
|
-
|
|
+
|
|
createThread(numAdd);
|
|
createThread(numAdd);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
@@ -168,7 +169,7 @@ void ThreadPool::managerThread()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
+
|
|
|
|
|
|
if (num_idle > m_threadMaxIdle.load())
|
|
if (num_idle > m_threadMaxIdle.load())
|
|
{
|
|
{
|
|
@@ -179,7 +180,7 @@ void ThreadPool::managerThread()
|
|
}
|
|
}
|
|
m_threadExitNum.exchange(num_Exit);
|
|
m_threadExitNum.exchange(num_Exit);
|
|
|
|
|
|
- SPDLOG_INFO("有{}个线程需要退出", m_threadExitNum.load());
|
|
+ FMTLOG_INFO("有{}个线程需要退出", m_threadExitNum.load());
|
|
|
|
|
|
for (int i = 0; i < num_Exit; i++)
|
|
for (int i = 0; i < num_Exit; i++)
|
|
{
|
|
{
|
|
@@ -189,10 +190,10 @@ void ThreadPool::managerThread()
|
|
|
|
|
|
clearThread();
|
|
clearThread();
|
|
|
|
|
|
-
|
|
+
|
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
}
|
|
}
|
|
- SPDLOG_INFO("管理线程退出...");
|
|
+ FMTLOG_INFO("管理线程退出...");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|