README.md in zache-0.5.2 vs README.md in zache-0.5.3

- old
+ new

@@ -23,15 +23,23 @@ zache = Zache.new # Expires in 5 minutes v = zache.get(:count, lifetime: 5 * 60) { expensive() } ``` -By default `Zache` is thread-safe. You turn that off by using `sync` argument: +By default `Zache` is thread-safe. It locks the entire cache on each +`get` call. You turn that off by using `sync` argument: ```ruby zache = Zache.new(sync: false) v = zache.get(:count) { expensive() } ``` + +You may use "dirty" mode, which will return you an expired value, while +calculation is waiting. Say, you have something in the cache, but it's +expired. Then, you call `get` with a long running block. The thread waits, +while another one calls `get` again. That second thread won't wait, but will +receive what's left in the cache. This is a very convenient mode for situations +when you don't really care about data accuracy, but performance is an issue. That's it. # How to contribute