Skip to content

A simple resource pool that accepts a resource class to build the pool's resources from

License

Notifications You must be signed in to change notification settings

robfors/quack_pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuackPool

QuackPool is a ruby gem. It is a simple resource pool that accepts a resource class to build the pool's resources from.

Features

  • thread safe
  • only builds new resources as needed
  • you can specify a max resource limit

Intall

gem install quack_pool

Example

require 'quack_pool'

class Resource
end

# unlimited resources
pool = QuackPool.new(resource_class: Resource)
resource1 = pool.release_resource
resource2 = pool.release_resource
# use resources ...
pool.absorb_resource(resource1)
pool.absorb_resource(resource2)

# limited resources
pool = QuackPool.new(resource_class: Resource, size: 2)
resource1 = pool.release_resource
thread = Thread.new do
  resource2 = pool.release_resource
  # use resource ...
  sleep 2
  pool.absorb_resource(resource1)
end
sleep 1
resource3 = pool.release_resource # will block until a resource is available
# use resources ...
pool.absorb_resource(resource1)
pool.absorb_resource(resource3)
thread.join

About

A simple resource pool that accepts a resource class to build the pool's resources from

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages