If you run the code snippet I pasted in 
https://play.golang.org/p/4R-WlCiKNT you will see that it runs both in 
parallel - hence my confusion

 

On Monday, October 3, 2016 at 12:04:39 PM UTC-7, Ian Lance Taylor wrote:
>
> On Mon, Oct 3, 2016 at 11:31 AM, 'SrimanthG' via golang-nuts 
> <golan...@googlegroups.com <javascript:>> wrote: 
> > 
> > I ran a Go program with GOMAXPROCS=1 and two goroutines which both did 
> > "runtime.LockOSThread()" and slept 10 seconds before exiting. 
> > 
> > Code: https://play.golang.org/p/4R-WlCiKNT 
> > 
> > Since I had 1 OS thread and 2 goroutines trying to lock an OS thread, I 
> was 
> > expecting only one of them to complete first before the other one 
> started... 
> > because the documentation said "Until the calling goroutine exits or 
> calls 
> > UnlockOSThread, it will always execute in that thread, and no other 
> > goroutine can." 
> > 
> > However the output shows that both goroutines execute in parallel, 
> > contradicting LockOSThread documentation. 
> > Can someone explain if the documentation is wrong, if its a bug, or a 
> better 
> > way to understand how these constructs work? 
>
> GOMAXPROCS set a limit on the number of goroutines that may run in 
> parallel.  It does not set any sort of limit on the number of threads 
> that may exist.  You have two threads, which is fine.  All that 
> setting GOMAXPROCS=1 does is request the scheduler to only run one of 
> those threads at a time. 
>
> 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