From: Matt Dordal Date: Fri, 13 Mar 2015 17:44:08 +0000 (-0700) Subject: Add ctor to CPUThreadPoolExecutor to enable custom queue sizes X-Git-Tag: v0.31.0~10 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=aae7c5b3cd843fcd57cedf2558204c7c994353e8;p=folly.git Add ctor to CPUThreadPoolExecutor to enable custom queue sizes Summary: Seems useful to do without passing in a totally custom queue. Makes the client code a bit simpler. Test Plan: used it, saw low memory usage and no crash Reviewed By: davejwatson@fb.com Subscribers: trunkagent, iaroslav, fugalh, folly-diffs@, jsedgwick, yfeldblum, slarsen FB internal diff: D1907874 Signature: t1:1907874:1426268010:3159ae339b51f5dbc7fe034644bbc968b92b072c --- diff --git a/folly/wangle/concurrent/CPUThreadPoolExecutor.cpp b/folly/wangle/concurrent/CPUThreadPoolExecutor.cpp index 25b22148..fcc835cd 100644 --- a/folly/wangle/concurrent/CPUThreadPoolExecutor.cpp +++ b/folly/wangle/concurrent/CPUThreadPoolExecutor.cpp @@ -57,6 +57,18 @@ CPUThreadPoolExecutor::CPUThreadPoolExecutor( CPUThreadPoolExecutor::kDefaultMaxQueueSize), std::move(threadFactory)) {} +CPUThreadPoolExecutor::CPUThreadPoolExecutor( + size_t numThreads, + uint32_t numPriorities, + size_t maxQueueSize, + std::shared_ptr threadFactory) + : CPUThreadPoolExecutor( + numThreads, + folly::make_unique>( + numPriorities, + maxQueueSize), + std::move(threadFactory)) {} + CPUThreadPoolExecutor::~CPUThreadPoolExecutor() { stop(); CHECK(threadsToStop_ == 0); diff --git a/folly/wangle/concurrent/CPUThreadPoolExecutor.h b/folly/wangle/concurrent/CPUThreadPoolExecutor.h index bd37d324..56833e22 100644 --- a/folly/wangle/concurrent/CPUThreadPoolExecutor.h +++ b/folly/wangle/concurrent/CPUThreadPoolExecutor.h @@ -42,6 +42,13 @@ class CPUThreadPoolExecutor : public ThreadPoolExecutor { std::shared_ptr threadFactory = std::make_shared("CPUThreadPool")); + explicit CPUThreadPoolExecutor( + size_t numThreads, + uint32_t numPriorities, + size_t maxQueueSize, + std::shared_ptr threadFactory = + std::make_shared("CPUThreadPool")); + ~CPUThreadPoolExecutor(); void add(Func func) override;