On Tue, Aug 23, 2016 at 1:54 AM, Lars Kulseng <larskuls...@gmail.com> wrote:
>
> I have tried to find some onformation about how OS-threads are created, and
> what their roles are. I know that this doesn't really matter in a lot of
> cases since goroutines are multiplexed on top of OS-threads and they are
> usually created at startup of the program, but I'm just trying to understand
> what is happening.
>
> Can someone help me understand this? So far, what I have found from various
> sources is:
>
> GOMAXPROCS-number of threads are created to run Go-code, which used to
> default to 1, but now defaults to the number of processors (whatever the
> system shows as a processor) available to the machine.

That is inaccurate.  GOMAXPROCS is the number of threads that the Go
scheduler will schedule for simultaneous execution.  It is the number
of threads that the Go scheduler will create.  Normally there will be
more than GOMAXPROCS threads.

> If the code requires a syscall or has the potential to block, another thread
> is created for this.

Approximately yes.  A better way to describe it would be that if a
thread blocks in a syscall or C function, then a new thread will be
created in order to maintain the goal of having GOMAXPROCS threads
simultaneously executing Go code.

> More thread(s) are created for GC

Not really.  Extra goroutines are created for GC, but they are
scheduled onto the threads like other goroutines.  Also some GC work
is done by ordinary goroutines as they allocate memory.  Various
mechanisms ensure that the GC gets enough CPU time to keep the program
from running out of memory.

> All of this is probably system-dependent, and Go-version dependent as well,
> so I know it's not the easiest thing to answer in a simple way.

That is true, I'm describing the gc toolchain version 1.7.

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

Reply via email to