In any combination of any number of threads running for any values with the same key:
- It is guaranteed that only one item will be added
- and this will be the only call to which true is returned.
- It is not guaranteed that the delegate overload will only execute the delegate once
- because the class uses optimistic concurrency control.
- The implicit assumption is that it’s rare for multiple concurrent calls to occur in reality, so more efficient to compute anyway, then replace or throw away as appropriate.
- If the delegate is expensive or has unwanted side effects, a Lazy<> can be used instead.