Golang supports LockOSThread() to make current goroutine exclusively tied to current OS thread, and it can also UnlockOSThread().
LockOSThread()
UnlockOSThread()
Are there
runtime.LockOsThread it is usually used for calling C code that requires running in the main thread, like in graphics libraries.
Go Wiki page about LockOsThread and an example on how to use it.
Google groups discussion about the use of LockOsThread in SDL.