Comment by JamesSwift

Comment by JamesSwift a day ago

3 replies

Looks good. Id suggest making your `get` wait to acquire the lock until needed. eg instead of

  @lock.synchronize do
    entry = @store[key]
    return nil unless entry

    ...
you can do

  entry = @store[key]
  return nil unless entry

  @lock.synchronize do
    entry = @store[key]
And similarly for other codepaths
chowells a day ago

Does the memory model guarantee that double-check locking will be correct? I don't actually know for ruby.

  • JamesSwift a day ago

    I think it wouldnt even be a consideration on this since we arent initializing the store here only accessing the key. And theres already the check-then-set race condition in that scenario so I think it is doubly fine.

hp_hovercraft84 18 hours ago

Good call, but I think I would like to ensure it remains thread-safe as @store is a hash. Although I will consider something like this in a future update. Thanks!