goroutine是go中最重要的功能之一,正是因为有了goroutine这样强大的工具,go在并发方面表现的特别优秀. 那么goroutine和普通的线程和协程有什么区别呢?首先,我们需要明白线程和协程的区别,线程是内核态的,而协程是用户态的.什么意思呢?就是说线程之间的切换主要由内核去调度,而协程之间的切换则需要用户去操作.线程切换需要保存上下文信息,切换到另一个线程,过段时间,恢复到之前的线程继续执行.cpu时间片的让渡,上下文的保存等等复杂操作都是由内核实现的,程序员不需要关注其中的细节…