diff --git a/src/Poller/EventPoller.cpp b/src/Poller/EventPoller.cpp index 8622d25b..32082ab1 100644 --- a/src/Poller/EventPoller.cpp +++ b/src/Poller/EventPoller.cpp @@ -642,5 +642,9 @@ void EventPollerPool::enableCpuAffinity(bool enable) { s_enable_cpu_affinity = enable; } +void EventPollerPool::releasePool() { + releaseAllEventPooler(); +} + } // namespace toolkit diff --git a/src/Poller/EventPoller.h b/src/Poller/EventPoller.h index c196ea82..1d3fc77b 100644 --- a/src/Poller/EventPoller.h +++ b/src/Poller/EventPoller.h @@ -376,6 +376,8 @@ class EventPollerPool : public std::enable_shared_from_this, pu */ static void enableCpuAffinity(bool enable); + void releasePool(); + /** * 获取第一个实例 * @return diff --git a/src/Thread/TaskExecutor.cpp b/src/Thread/TaskExecutor.cpp index c7082b16..e3edd3b9 100644 --- a/src/Thread/TaskExecutor.cpp +++ b/src/Thread/TaskExecutor.cpp @@ -227,6 +227,10 @@ size_t TaskExecutorGetterImp::getExecutorSize() const { return _threads.size(); } +void TaskExecutorGetterImp::releaseAllEventPooler() { + _threads.clear(); +} + size_t TaskExecutorGetterImp::addPoller(const string &name, size_t size, int priority, bool register_thread, bool enable_cpu_affinity) { auto cpus = thread::hardware_concurrency(); size = size > 0 ? size : cpus; diff --git a/src/Thread/TaskExecutor.h b/src/Thread/TaskExecutor.h index e12236f9..3a55a7e0 100644 --- a/src/Thread/TaskExecutor.h +++ b/src/Thread/TaskExecutor.h @@ -296,6 +296,8 @@ class TaskExecutorGetterImp : public TaskExecutorGetter { */ size_t getExecutorSize() const override; + void releaseAllEventPooler(); + protected: size_t addPoller(const std::string &name, size_t size, int priority, bool register_thread, bool enable_cpu_affinity = true);