ClickHouse/libs/libpocoext/src/SessionPoolHelpers.cpp

20 lines
554 B
C++
Raw Normal View History

2017-12-26 21:34:06 +00:00
#include <mutex>
#include <Poco/ThreadPool.h>
2018-04-07 03:07:26 +00:00
#include <Poco/Ext/SessionPoolHelpers.h>
2017-12-26 21:34:06 +00:00
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();
}