goroutine是Go语言中轻量级协程。当一个goroutine执行完毕或者遇到阻塞时,就会主动放弃CPU资源,让其他等待执行的goroutine有机会执行。这个主动放弃CPU资源的行为就是yield。
goroutine中,yield是一种协作式的调度方式,和pre-emption(强制抢占)一起配合。pre-emption是runtime强制使得该协程放弃执行权,而yield是可以由程序员主动控制并放弃资源。
yield通过在代码中主动调用runtime.Gosched()函数来放弃当前执行权
评价方面:yield机制通过主动放弃CPU资源,避免了长时间占用CPU资源和过度竞争的问题,提高了程序的并发性能