It depends then, because technically the Go RW lock queues readers behind a waiting writer so “busy” is somewhat undefined. If “busy” means “would block” you can still do it - I’ll post the code tonight.
> On Dec 3, 2019, at 6:49 PM, Robert Engels <reng...@ix.netcom.com> wrote: > > I would use an atomic and a lock instead of two locks. > >>> On Dec 3, 2019, at 6:35 PM, burak serdar <bser...@computer.org> wrote: >>> >>> 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. -- 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/04FB6D53-9937-4AA4-B640-0D276640718B%40ix.netcom.com.