(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.