You want the gls package referenced earlier. 

Go doesn’t have it built in because the designers don’t like it or feel it is 
necessary. You can find and read the GitHub issue that covers thread/go local 
storage. 

> On May 26, 2020, at 8:04 PM, Jon Perryman <jon.perry...@gmail.com> wrote:
> 
> 
> 
> On Sun, May 24, 2020 at 11:05 PM <adithyasasha...@gmail.com> wrote:
> > Yeah this works, but you can say this as workaround, what i really want is, 
> > does native go support? if not why?
> >> On Monday, May 25, 2020 at 7:57:17 AM UTC+5:30, tokers wrote:
> >> You may try to inspect this go package: https://github.com/jtolio/gls
> 
> Each package has a set of global variables. Adding another set of globals for 
> each executing Goroutine would be too complex. Functions are not specific to 
> Goroutine, but a second global pool would require additional considerations 
> specific to goroutine vs main. 
> 
> What is the drawback to passing the goroutine global variables as a struct to 
> each function? It's certainly far less overhead than the workaround and it 
> follows standard GO conventions. 
> 
> <pre>
> package main
> 
> import (
>     "fmt"
>     "time"
>     "sync"
> )
> 
> func main() {
> 
>     go goroutine()
>     go goroutine()
>     go goroutine()
>     go goroutine()
> 
>     time.Sleep(time.Second)
>     fmt.Println("all done")
> }
> 
> type Global struct {
>     Id int
>     Name string
>     Cnt int
> }
> 
> var goroutineCount int = 0
> 
> func goroutine() {
>     mutex := &sync.Mutex{}
>     mutex.Lock()
>     goroutineCount++
>     mutex.Unlock()
>     g := Global{
>         Id : goroutineCount,
>         Name : "some name",
>         Cnt : 100,
>     }
>     g.Method1()
> }
> 
> func (g *Global) Method1() {
>     g.Method2()
>     g.Cnt++
>     fmt.Println("method1", g.Id, g.Name, g.Cnt)
> }
> 
> func (g *Global) Method2() {
>     g.Cnt++
>     fmt.Println("method2", g.Id, g.Name, g.Cnt)
> }
> </pre>
> 
> Jon.
> -- 
> 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/CAByJhJnn6uLbcM_JBBV%3DJewBQB5iztb23BYHAO98Bvf2nTkPUQ%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/266115A4-84BA-4131-81BD-C49DC74ABA80%40ix.netcom.com.

Reply via email to