They are the lock count for the given lock. Imagine each lock keeps track of how many times it has been acquired. There is a happens-before edge from an unlock to a lock only if the unlock has a lower count (i.e. was earlier than) than the lock.
On Mon, Oct 23, 2017 at 3:43 PM, T L <tapir....@gmail.com> wrote: > Thanks all for the explanations. > > I still have one question, which has been mentioned above. > > > For any sync.Mutex or sync.RWMutex variable l and *n* < *m*, call *n* > of l.Unlock() happens before call *m* of l.Lock() returns. > > What are the "n" and "m" here? > > On Saturday, October 21, 2017 at 5:01:08 PM UTC-4, T L wrote: >> >> package main >> >> import "fmt" >> import "sync" >> import "sync/atomic" >> >> func main() { >> var a, b int32 = 0, 0 >> >> go func() { >> a = 1 >> atomic.AddInt32(&b, 1) >> }() >> >> for { >> if n := atomic.LoadInt32(&b); n == 1 { >> fmt.Println(a) // always print 1? >> break >> } >> } >> >> //====================== >> >> var x, y int32 = 0, 0 >> var m sync.Mutex >> >> go func() { >> x = 1 >> m.Lock() >> y++ >> m.Unlock() >> }() >> >> for { >> m.Lock() >> n := y >> m.Unlock() >> if n == 1 { >> fmt.Println(x) // always print 1? >> break >> } >> } >> } >> > -- > You received this message because you are subscribed to a topic in the > Google Groups "golang-nuts" group. > To unsubscribe from this topic, visit https://groups.google.com/d/ > topic/golang-nuts/mSD7u1oEhSk/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.