You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tubemq.apache.org by go...@apache.org on 2020/07/21 09:22:26 UTC

[incubator-tubemq] branch tubemq-client-cpp updated: [TUBEMQ-292]C++ SDK singleton & executor_pool optimization (#217)

This is an automated email from the ASF dual-hosted git repository.

gosonzhang pushed a commit to branch tubemq-client-cpp
in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git


The following commit(s) were added to refs/heads/tubemq-client-cpp by this push:
     new a710202  [TUBEMQ-292]C++ SDK singleton & executor_pool optimization (#217)
a710202 is described below

commit a710202e1cb8a445292711406aa383d842e1b217
Author: charlely <41...@users.noreply.github.com>
AuthorDate: Tue Jul 21 17:22:18 2020 +0800

    [TUBEMQ-292]C++ SDK singleton & executor_pool optimization (#217)
    
    Co-authored-by: charleli <ch...@tencent.com>
---
 .../tubemq-client-cpp/include/tubemq/executor_pool.h               | 6 ++++++
 tubemq-client-twins/tubemq-client-cpp/include/tubemq/singleton.h   | 7 ++++---
 tubemq-client-twins/tubemq-client-cpp/src/logger.cc                | 6 +++---
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/tubemq-client-twins/tubemq-client-cpp/include/tubemq/executor_pool.h b/tubemq-client-twins/tubemq-client-cpp/include/tubemq/executor_pool.h
index 404616b..0b20c4f 100644
--- a/tubemq-client-twins/tubemq-client-cpp/include/tubemq/executor_pool.h
+++ b/tubemq-client-twins/tubemq-client-cpp/include/tubemq/executor_pool.h
@@ -74,6 +74,12 @@ class ExecutorPool : noncopyable {
 
   ExecutorPtr Get();
 
+  // Resize executor thread
+  void Resize(int nthreads) {
+    Lock lock(mutex_);
+    executors_.resize(nthreads);
+  }
+
   void Close();
 
  private:
diff --git a/tubemq-client-twins/tubemq-client-cpp/include/tubemq/singleton.h b/tubemq-client-twins/tubemq-client-cpp/include/tubemq/singleton.h
index 2761bda..1978da6 100644
--- a/tubemq-client-twins/tubemq-client-cpp/include/tubemq/singleton.h
+++ b/tubemq-client-twins/tubemq-client-cpp/include/tubemq/singleton.h
@@ -33,15 +33,16 @@ namespace tubemq {
 template <typename T>
 class Singleton : noncopyable {
  public:
-  Singleton() = delete;
-  ~Singleton() = delete;
-
   static T& Instance() {
     std::call_once(once_, Singleton::init);
     assert(value_ != nullptr);
     return *value_;
   }
 
+ protected:
+  Singleton() {}
+  ~Singleton() {}
+
  private:
   static void init() { value_ = new T(); }
 
diff --git a/tubemq-client-twins/tubemq-client-cpp/src/logger.cc b/tubemq-client-twins/tubemq-client-cpp/src/logger.cc
index 0fd2fbf..f374d9b 100644
--- a/tubemq-client-twins/tubemq-client-cpp/src/logger.cc
+++ b/tubemq-client-twins/tubemq-client-cpp/src/logger.cc
@@ -27,11 +27,11 @@
 
 #include <string>
 
-namespace tubemq {
+#include "tubemq/singleton.h"
 
-Logger tubemq_logger;
+namespace tubemq {
 
-Logger& GetLogger() { return tubemq_logger; }
+Logger& GetLogger() { return Singleton<Logger>::Instance(); }
 
 static const uint32_t kMBSize = 1024 * 1024;