I understand that in Go, runtime.LockOSThread() will bind a goroutine to one OS thread and not allow other goroutines to execute in that thread. Is this also true for child goro
The documentation for runtime.LockOSThread
says:
LockOSThread wires the calling goroutine to its current operating system thread. Until the calling goroutine exits or calls UnlockOSThread, it will always execute in that thread, and no other goroutine can.
(emphasis mine)
This means that if a certain implementation of Go did what you're asking, it would be faulty.
To clarify: if a goroutine had reserved a thread and another goroutine executed on that same thread; that's what would be wrong.