On Fri, Sep 25, 2020 at 6:29 PM Alex Besogonov <alex.besogo...@gmail.com> wrote: > > If you mutate the value, then only the current goroutine is affected (not > even its existing children). Basically, the goroutine-local context is copied > on new goroutine launch. > > That's how pprof labels work right now, btw.
Labels are not variables. Variables have values that can be changed. For example, if we had goroutine local variables then code like goroutine var G int32 func F(s []P) { for _, p := range s { G += p.SlowMethod() } } might get changed to func F(s []P) { for _, p := range s { p := p go func() { atomic.Add(&G, p.SlowMethod()) }() } } but the two functions would work very differently. Ian > On Friday, September 25, 2020 at 4:43:45 PM UTC-7 Ian Lance Taylor wrote: >> >> On Fri, Sep 25, 2020 at 10:35 AM Alex Besogonov >> <alex.be...@gmail.com> wrote: >> > >> > Inheritable goroutine-locals would actually work just fine in Go. >> > Moreover, Go actually has them in the form of pprof labels. >> >> What should happen if one goroutine changes an inherited >> goroutine-local variable? >> >> Ian >> >> >> > On Wednesday, September 23, 2020 at 5:55:50 PM UTC-7 Ian Lance Taylor >> > wrote: >> >> >> >> On Wed, Sep 23, 2020 at 5:46 PM Alex Mills <al...@channelmeter.com> wrote: >> >> > >> >> > There appears to be a way to get a reference on the goroutine id: >> >> > >> >> > http://blog.sgmansfield.com/2015/12/goroutine-ids/ >> >> >> >> But as you can see by reading that blog article, that is almost a joke. >> >> >> >> Go considers these things to be better handled explicitly, which is >> >> why people are telling you to use a context.Context value. And, yes, >> >> you'll want to use a Context aware logging package. >> >> >> >> In Go it's trivial to create new goroutines, and as soon as you do >> >> that any goroutine-local-variable scheme falls apart. So Go has >> >> consistently chosen to not provide that capability, and similarly to >> >> not provide goroutine IDs. It's an intentional choice by the >> >> language. There have been a number of discussions about this in the >> >> past on this mailing list. >> >> >> >> Ian >> > >> > -- >> > 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...@googlegroups.com. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msgid/golang-nuts/f78f2d12-89d2-494d-983a-a462f0124d82n%40googlegroups.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/ee6daca3-6e85-458e-95fd-877e8af4368dn%40googlegroups.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/CAOyqgcWyF61EgKxxn3ikokyJi61-9Zqde_WtyPVMO1A6ojnLvg%40mail.gmail.com.