diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-06-11 12:49:19 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-06-11 12:49:19 +0000 |
commit | d3c530c84725f39026ebba1a9e1393d10f63f739 (patch) | |
tree | f7e352baf9d03f7c0311604bdd3ffc709a60a39a /searchlib | |
parent | b3d50ad2221e23150f9adf611951502117aac49f (diff) |
Add method to get number of executors.
Diffstat (limited to 'searchlib')
4 files changed, 22 insertions, 38 deletions
diff --git a/searchlib/src/vespa/searchlib/common/foregroundtaskexecutor.h b/searchlib/src/vespa/searchlib/common/foregroundtaskexecutor.h index 91fa9ef7a7d..10743baf216 100644 --- a/searchlib/src/vespa/searchlib/common/foregroundtaskexecutor.h +++ b/searchlib/src/vespa/searchlib/common/foregroundtaskexecutor.h @@ -4,15 +4,9 @@ #include "isequencedtaskexecutor.h" #include <vespa/vespalib/stllike/hash_map.h> -namespace vespalib -{ - -class ThreadStackExecutorBase; +namespace vespalib { class ThreadStackExecutorBase; } -} - -namespace search -{ +namespace search { /** * Class to run multiple tasks in parallel, but tasks with same @@ -29,14 +23,12 @@ public: ForegroundTaskExecutor(); ForegroundTaskExecutor(uint32_t threads); + ~ForegroundTaskExecutor() override; - ~ForegroundTaskExecutor(); - - virtual uint32_t getExecutorId(uint64_t componentId) override; - - virtual void executeTask(uint32_t executorId, vespalib::Executor::Task::UP task) override; - - virtual void sync() override; + uint32_t getNumExecutors() const override { return _threads; } + uint32_t getExecutorId(uint64_t componentId) override; + void executeTask(uint32_t executorId, vespalib::Executor::Task::UP task) override; + void sync() override; }; } // namespace search diff --git a/searchlib/src/vespa/searchlib/common/isequencedtaskexecutor.h b/searchlib/src/vespa/searchlib/common/isequencedtaskexecutor.h index 9b825f1c47e..8488d986bbe 100644 --- a/searchlib/src/vespa/searchlib/common/isequencedtaskexecutor.h +++ b/searchlib/src/vespa/searchlib/common/isequencedtaskexecutor.h @@ -24,6 +24,7 @@ public: * @return executor id */ virtual uint32_t getExecutorId(uint64_t componentId) = 0; + virtual uint32_t getNumExecutors() const = 0; uint32_t getExecutorId(vespalib::stringref componentId) { vespalib::hash<vespalib::stringref> hashfun; diff --git a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h index 0a04d0625c6..0c455225c89 100644 --- a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h +++ b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h @@ -5,16 +5,12 @@ #include <vespa/vespalib/stllike/hash_map.h> #include <vector> -namespace vespalib -{ - -class ExecutorStats; -class BlockingThreadStackExecutor; - +namespace vespalib { + class ExecutorStats; + class BlockingThreadStackExecutor; } -namespace search -{ +namespace search { /** * Class to run multiple tasks in parallel, but tasks with same @@ -29,17 +25,13 @@ public: using ISequencedTaskExecutor::getExecutorId; SequencedTaskExecutor(uint32_t threads, uint32_t taskLimit = 1000); - ~SequencedTaskExecutor(); void setTaskLimit(uint32_t taskLimit); - - virtual uint32_t getExecutorId(uint64_t componentId) override; - - virtual void executeTask(uint32_t executorId, vespalib::Executor::Task::UP task) override; - - virtual void sync() override; - + uint32_t getNumExecutors() const override { return _executors.size(); } + uint32_t getExecutorId(uint64_t componentId) override; + void executeTask(uint32_t executorId, vespalib::Executor::Task::UP task) override; + void sync() override; Stats getStats(); }; diff --git a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutorobserver.h b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutorobserver.h index 755fc9549c6..e7cbe7f54bc 100644 --- a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutorobserver.h +++ b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutorobserver.h @@ -6,8 +6,7 @@ #include <vector> #include <mutex> -namespace search -{ +namespace search { /** * Observer class to observe class to run multiple tasks in parallel, @@ -24,12 +23,12 @@ public: using ISequencedTaskExecutor::getExecutorId; SequencedTaskExecutorObserver(ISequencedTaskExecutor &executor); - virtual ~SequencedTaskExecutorObserver() override; - virtual uint32_t getExecutorId(uint64_t componentId) override; - virtual void executeTask(uint32_t executorId, - vespalib::Executor::Task::UP task) override; - virtual void sync() override; + + uint32_t getNumExecutors() const override { return _executor.getNumExecutors(); } + uint32_t getExecutorId(uint64_t componentId) override; + void executeTask(uint32_t executorId, vespalib::Executor::Task::UP task) override; + void sync() override; uint32_t getExecuteCnt() const { return _executeCnt; } uint32_t getSyncCnt() const { return _syncCnt; } |