File | Date | Author | Commit |
---|---|---|---|
.settings | 2017-09-18 |
![]() |
[76c403] Change project config for rebar 3. |
include | 2020-06-08 |
![]() |
[542baf] Update @copyright year. |
priv | 2020-06-10 |
![]() |
[73500e] Update Read me files. |
src | 2020-06-26 |
![]() |
[3fbe84] Add hex publish. |
test | 2020-06-08 |
![]() |
[542baf] Update @copyright year. |
.gitignore | 2016-02-09 |
![]() |
[e2f694] initial commit |
.project | 2016-02-09 |
![]() |
[e2f694] initial commit |
LICENSE | 2016-02-09 |
![]() |
[d243a5] Initial commit |
README.md | 2020-06-26 |
![]() |
[3fbe84] Add hex publish. |
archive.xml | 2020-05-18 |
![]() |
[b86418] Refactoring code. |
article.md | 2020-06-10 |
![]() |
[8be37a] Update article format. |
rebar.config | 2020-06-26 |
![]() |
[3fbe84] Add hex publish. |
Resource pool project is written in Erlang as a tiny library. The goal of the tool is reduce the overhead of creating new resources by reusing of the same resources among multiple processes. Achieving result is better performance and throughput. The resource pool was inspired by Java Apache's commons pool and adopts API and main principals from this project. Database connection is most popular example for pooling resource.
Resource pool project was inspired by Apache Commons Pool library and API was borrowed from there. But internal
implementation is completely different and is using Erlang OTP design principles and Erlang concurrent model. Resource Pool
is Erlang application library.
resource_pool_srv.erl
is a main module of Resource Pool. It is generic server and implements
almost all Pool functionality.resource_pool.erl
is a facade for gen_server and exposes all API functions.resource_factory.erl
defines resource_factory behaviour and acts as a template and
simple implementation resource factory for testing purpose.{ok, Pid} = resource_pool:new(test_pool, resource_factory, [])where:
test_pool
- registered name of the new pool;resource_factory
- name of a module that implements resource_factory behaviour.Resource = resource_pool:borrow(test_pool)The process can use the borrowed resource and has to return to pool after finish.
ok = resource_pool:return(test_pool, Resource)The process cannot use the
Resource
anymore.
Options = [{max_active, 10}, {when_exhausted_action, fail}]
{ok, Pid} = resource_pool:new(test_pool, resource_factory, Options)See resource_pool for more details about options.
See Resource Pool article for details and http://erlpool.sourceforge.net/.