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/70F164B9-88EB-414F-9E61-378C247BF957%40ix.netcom.com.

Reply via email to