From f81949726f93d2ca2f906453130e5b630bbf6a2d Mon Sep 17 00:00:00 2001 From: jeyawn Date: Fri, 5 Dec 2025 21:24:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20releasePool=20=E4=BD=BF?= =?UTF-8?q?=E5=BE=97=E5=A4=96=E9=83=A8=E5=8F=AF=E4=BB=A5=E4=B8=BB=E5=8A=A8?= =?UTF-8?q?=E9=87=8A=E6=94=BEPollers=20=E3=80=82=E7=9B=AE=E7=9A=84?= =?UTF-8?q?=E6=98=AF=E8=A7=A3=E5=86=B3=E9=97=AE=E9=A2=98=EF=BC=9A=20https:?= =?UTF-8?q?//github.com/ZLMediaKit/ZLMediaKit/issues/4580?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Poller/EventPoller.cpp | 4 ++++ src/Poller/EventPoller.h | 2 ++ src/Thread/TaskExecutor.cpp | 4 ++++ src/Thread/TaskExecutor.h | 2 ++ 4 files changed, 12 insertions(+) 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);