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.