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.

Reply via email to