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;