mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-17 21:24:28 +00:00
20 lines
556 B
C++
20 lines
556 B
C++
#include <mutex>
|
|
#include <Poco/ThreadPool.h>
|
|
#include <Common/PocoSessionPoolHelpers.h>
|
|
|
|
|
|
std::shared_ptr<Poco::Data::SessionPool> createAndCheckResizePocoSessionPool(PocoSessionPoolConstructor pool_constr)
|
|
{
|
|
static std::mutex mutex;
|
|
|
|
Poco::ThreadPool & pool = Poco::ThreadPool::defaultPool();
|
|
|
|
/// NOTE: The lock don't guarantee that external users of the pool don't change its capacity
|
|
std::unique_lock lock(mutex);
|
|
|
|
if (pool.available() == 0)
|
|
pool.addCapacity(2 * std::max(pool.capacity(), 1));
|
|
|
|
return pool_constr();
|
|
}
|