Erm... not seeing how cas works to try a read-lock, which admits multiple 
callers...

On Tuesday, December 3, 2019 at 5:12:08 PM UTC-8, Robert Engels wrote:
>
> Can’t code on the phone but a cas on the atomic then take the lock. But if 
> you never need to block you don’t even need the lock. 
>
> On Dec 3, 2019, at 6:52 PM, Liam Breck <networ...@gmail.com <javascript:>> 
> wrote:
>
> 
> Which looks like...?
>
> On Tue, Dec 3, 2019, 4:50 PM Robert Engels <ren...@ix.netcom.com 
> <javascript:>> wrote:
>
>> I would use an atomic and a lock instead of two locks. 
>>
>> > On Dec 3, 2019, at 6:35 PM, burak serdar <bse...@computer.org 
>> <javascript:>> wrote:
>> > 
>> > On Tue, Dec 3, 2019 at 5:21 PM Liam Breck <networ...@gmail.com 
>> <javascript:>> 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 golan...@googlegroups.com <javascript:>.
>> >> 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 golan...@googlegroups.com <javascript:>.
>> > 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/2d284bfc-3916-425a-9dd1-59b216ef23e2%40googlegroups.com.

Reply via email to