I've a race scenario used with Mutex.Lock with Lock() and Unlock(). now multi-routines try to lock the resource and start a few logical code if the Lock.Lock() succesfully. other routines don't need to block util Lock.Unlock() that they can do the above logicals with next time or in future(logical may changes some variables and those variables' change could be see with latency). That looks like a Trylock() implemetion. I browsed the discussion https://groups.google.com/forum/#!searchin/golang-nuts/trylock%7Csort:relevance/golang-nuts/MTaJNZ49u60/ycc7UHgjLwgJ <https://groups.google.com/forum/#!searchin/golang-nuts/trylock%7Csort:relevance/golang-nuts/MTaJNZ49u60/ycc7UHgjLwgJ>and guess Trylock() may the best way ...
var lock sync.Mutex func change(vvv int) bool { if lock.Trylock() { // execute codes if we trylock successfully bla bla....... usage := vvv ....... bla bla....... return true } else { // someone is locking the resource. we skip the // change(vvvv) call. and take a chance in next // time. the context of this method we can drop // directly return false } } routines := 16 for ;routines != 0; routines-- { go func() { // infinite loop var i = 0 for { // discard the return value of change() change(i) i++ } }() } -- 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.