diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c0d4fd..55f1579 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.2.0 + +- Refactor class methods into instance methods to simplify implementation. +- Increase thread safety with Memcached implementation. + ## 0.1.3 - Properly throw Suo::LockClientError when the connection itself fails (Memcache server not reachable, etc.) diff --git a/README.md b/README.md index b7ab84d..b436f95 100644 --- a/README.md +++ b/README.md @@ -31,12 +31,22 @@ suo.lock("some_key") do @puppies.pet! end -2.times do - Thread.new do - # second argument is the number of resources - so this will run twice - suo.lock("other_key", 2, timeout: 0.5) { puts "Will run twice!" } - end -end +Thread.new { suo.lock("other_key", 2) { puts "One"; sleep 2 } } +Thread.new { suo.lock("other_key", 2) { puts "Two"; sleep 2 } } +Thread.new { suo.lock("other_key", 2) { puts "Three" } } + +# will print "One" "Two", but not "Three", as there are only 2 resources + +# custom acquisition timeouts (time to acquire) +suo = Suo::Client::Memcached.new(client: some_dalli_client, acquisition_timeout: 1) # in seconds + +# manually locking/unlocking +suo.lock("a_key") +foo.baz! +suo.unlock("a_key") + +# custom stale lock cleanup (cleaning of dead clients) +suo = Suo::Client::Redis.new(client: some_redis_client, stale_lock_expiration: 60*5) ``` ## TODO diff --git a/lib/suo/version.rb b/lib/suo/version.rb index 15283b4..1e751d4 100644 --- a/lib/suo/version.rb +++ b/lib/suo/version.rb @@ -1,3 +1,3 @@ module Suo - VERSION = "0.1.3" + VERSION = "0.2.0" end