On Thursday, November 15, 2018 at 1:51:08 AM UTC+1, Ian Lance Taylor wrote:
>
> On Wed, Nov 14, 2018 at 4:43 PM, Tom Payne <twp...@gmail.com <javascript:>> 
> wrote: 
> > 
> > I couldn't find the answer to this from Googling. 
> > 
> > According to the documentation that I've found: 
> > - For any given package, its imports' init() functions are run before 
> the 
> > package's init() function. 
> > - Within a package, init() functions are more-or-less run in lexical 
> > filename order. 
> > 
> > My question: 
> > Can init() functions in different packages ever run concurrently, e.g. 
> in 
> > separate go routines, or could they be in the future? 
> > 
> > This seems to be within the spec, and could lead to faster startup on 
> > multicore machines, for example when packages A and B independently 
> depend 
> > on C: both A and B's init() functions could run in separate goroutines 
> after 
> > C's init() function, without violating the above. However, this could 
> cause 
> > problems if (for example) A and B's init() functions update a map in C 
> > without synchronization. 
>
> See https://golang.org/ref/spec#Package_initialization : "Package 
> initialization—variable initialization and the invocation of init 
> functions—happens in a single goroutine, sequentially, one package at 
> a time." 
>
> Ian 
>

Perfect, many thanks for the insanely quick answer!

 

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to