The behavior you're describing is effectively LazyThreadSafetyMode.ExecutionAndPublication
. This allows multiple threads to access the Value
, but only a single thread to ever run the initialization method.
This enumeration is solely for determining how the creation occurs - you can always access Value
from multiple threads.