TaskRunner starts the background thread only when needed
Test: libhidl_test
Test: hidl_test
Test: boots
Change-Id: I5b6de5cd4a475b0653102e8004953ba008288ab1
diff --git a/base/include/hidl/SynchronizedQueue.h b/base/include/hidl/SynchronizedQueue.h
index 1813130..efb04e0 100644
--- a/base/include/hidl/SynchronizedQueue.h
+++ b/base/include/hidl/SynchronizedQueue.h
@@ -29,6 +29,7 @@
*/
template <typename T>
struct SynchronizedQueue {
+ SynchronizedQueue(size_t limit);
/* Gets an item from the front of the queue.
*
@@ -44,19 +45,18 @@
*/
size_t size();
- /* Sets the limit to the queue. Will fail
- * the push operation if the limit is reached.
- */
- void setLimit(size_t limit);
-
private:
std::condition_variable mCondition;
std::mutex mMutex;
std::queue<T> mQueue;
- size_t mQueueLimit = SIZE_MAX;
+ const size_t mQueueLimit;
};
template <typename T>
+SynchronizedQueue<T>::SynchronizedQueue(size_t limit) : mQueueLimit(limit) {
+}
+
+template <typename T>
T SynchronizedQueue<T>::wait_pop() {
std::unique_lock<std::mutex> lock(mMutex);
@@ -94,13 +94,6 @@
return mQueue.size();
}
-template <typename T>
-void SynchronizedQueue<T>::setLimit(size_t limit) {
- std::unique_lock<std::mutex> lock(mMutex);
-
- mQueueLimit = limit;
-}
-
} // namespace details
} // namespace hardware
} // namespace android