There are two cases in mutex.TryLock could return false
However, Per The Go memory model
> As far as the memory model is concerned, l.TryLock (or l.TryRLock) may be considered to be able to return false even when the mutex l is unlocked.
I am confused about the above sentence. How to understand the mutex.TryLock returns false even when the mutex is unlocked based on the memory model in Go?