(Note, FWIW, that in particular no write locks need to be *held*. It's
enough for Lock to be *called*, it doesn't have to have returned yet)

On Mon, Sep 21, 2020 at 12:29 PM Axel Wagner <axel.wagner...@googlemail.com>
wrote:

> I feel like the docs are pretty precise in what they say and why.
>
> a blocked Lock call excludes new readers from acquiring the lock.
>
>
> This means, the following could happen:
> Goroutine 1 calls RLock, acquires a Read-Lock
> Goroutine 2 calls Lock, blocking
> Goroutine 1 calls RLock again, blocking (as no new read locks can be
> acquired while GR 2 is blocked).
> Thus, you get a deadlock.
>
> It also has a conditional on the section
>
> If a goroutine holds a RWMutex for reading and another goroutine might
>> call Lock […]
>
>
> So if you know that no other goroutine might call Lock concurrently, then
> yes, you can call RLock twice. I can't really imagine a setting where you'd
> need an RWMutex and have that assurance and need recursive read locks. But
> there might be one.
>
> On Mon, Sep 21, 2020 at 12:16 PM Henrik Johansson <dahankz...@gmail.com>
> wrote:
>
>>
>> https://golang.org/pkg/sync/#RWMutex
>>
>> Holds that this prohibits recursive read locks but why would it?
>> I understand that deadlocks can happen in case write locks are held in
>> between the read locks
>> but why can't a goroutine issue several RLock calls?
>>
>> It does actually work in the playground.
>> https://play.golang.org/p/nOehJaeikxA
>> Is this simply a recommendation or should the docs be updated to clarify
>> what this means?
>>
>>
>> --
>> 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/CAKOF696YKSGn3j%2BcyX7o0ukA7wnD2Kq19_QGefUoeMELUZGOWA%40mail.gmail.com
>> <https://groups.google.com/d/msgid/golang-nuts/CAKOF696YKSGn3j%2BcyX7o0ukA7wnD2Kq19_QGefUoeMELUZGOWA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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/CAEkBMfFGYL1SsxK5rYeVS42CmX1zaAirbVWMoVT1-JJmAx%3DmSA%40mail.gmail.com.

Reply via email to