TaskRunner starts the background thread only when needed
Test: libhidl_test
Test: hidl_test
Test: boots
Change-Id: I5b6de5cd4a475b0653102e8004953ba008288ab1
diff --git a/base/TaskRunner.cpp b/base/TaskRunner.cpp
index cd1df05..33117e7 100644
--- a/base/TaskRunner.cpp
+++ b/base/TaskRunner.cpp
@@ -22,7 +22,10 @@
namespace details {
TaskRunner::TaskRunner() {
- mQueue = std::make_shared<SynchronizedQueue<Task>>();
+}
+
+void TaskRunner::start(size_t limit) {
+ mQueue = std::make_shared<SynchronizedQueue<Task>>(limit);
// Allow the thread to continue running in background;
// TaskRunner do not care about the std::thread object.
@@ -35,7 +38,9 @@
}
TaskRunner::~TaskRunner() {
- mQueue->push(nullptr);
+ if (mQueue) {
+ mQueue->push(nullptr);
+ }
}
} // namespace details