runtime库函数相当cool,因为它可以控制go语言程序的运行多方法
1. runtime.GOMAXPROCS函数
默认此函数的值与CPU逻辑个数相同,即有多少个goroutine并发执行,当然可以设置它,它的取值是1~256。最好在主函数在开始前设置它,因为设置它会停止当前程序的运行。
2. runtime.Goexit函数
调用此函数会立即使当前的goroutine的运行终止,而其它的goroutine并不会受此影响。runtime.Goexit在终止当前goroutine前会先执行此goroutine的还未执行的defer语句。
请注意千万别在主函数调用runtime.Goexit,因为会引发panic
3. runtime.Gosched函数
调用此函数会让当前的goroutine出让cpu,此goroutine会加入调用度器的可运行G队列,重新获得调度。
4. runtine.LockOSThread函数和runtime.UnlockOSThread函数
主要是为cgo准备的锁定解锁M与G,因为有些C语言的函数库(比如OpenGL)会用到线程本地存储技术。如果G进行cgo之后返回发现当前的M被转走了,绑定其它的G在运行就会发现错误,所以当需要进行M与G锁定的情况可以用这两个函数