On Tue, Dec 3, 2019 at 5:21 PM Liam Breck <networkimp...@gmail.com> wrote:
>
> I have a problem that is trivially solved via
>
> door sync.RWMutex
>
> func Reader() T {
>    if !door.TryRLock() { // missing in stdlib :-(
>       return busy
>    }
>    defer door.RUnlock()
>    ...
> }
>
> func Writer() {
>    door.Lock()
>    defer door.Unlock()
>    ...
> }
>
> How does one achieve this in Go?
Two locks and a bool?

var door=sync.Mutex{}
var x=sync.Mutex{}
var b bool

func trylock() bool {
x.Lock()
if b {
  x.Unlock()
  return false
}
b=true
door.Lock()
x.Unlock()
return true
}

unlock:

x.Lock()
b=false
door.Unlock()
x.Unlock()




>
> --
> 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.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CAKvHMgTO%3DxfFQ_u7aO9UE-1vHHEKmdhr47sro2mnp6DkEb6mPA%40mail.gmail.com.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAMV2RqrDeBNhkeswg%2BhdCf1kSzMEJduota%3D6UrNq4z2PQRtzEQ%40mail.gmail.com.

Reply via email to