summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-06-11 12:49:19 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2018-06-11 12:49:19 +0000
commitd3c530c84725f39026ebba1a9e1393d10f63f739 (patch)
treef7e352baf9d03f7c0311604bdd3ffc709a60a39a /searchlib
parentb3d50ad2221e23150f9adf611951502117aac49f (diff)
Add method to get number of executors.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/common/foregroundtaskexecutor.h22
-rw-r--r--searchlib/src/vespa/searchlib/common/isequencedtaskexecutor.h1
-rw-r--r--searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h24
-rw-r--r--searchlib/src/vespa/searchlib/common/sequencedtaskexecutorobserver.h13
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; }