NYC's Blog - 《Go程序设计语言》要点总结——并发 的评论 http://niyanchun.com/gopl-notes-concurrent.html 在如今硬件非常发达的时代,并发编程(concurrent programming)变得非常重要,Go在并发编程比大多数语言更方便。1. GoroutinesGo中没有多进程多线程的概念,而是使用... NYC http://niyanchun.com/gopl-notes-concurrent.html/comment-page-1#comment-225 2017-04-10T10:10:43+08:00 我没太明白你的意思,如果只是在Go里面的话,是没有线程这个概念的。而所谓的goroutine(或者说协程)是用户态的,它实际运行时Go的调度器会将它调度到线程上面去运行,但是不是一对一的关系,具体的调度是由调度器去控制,而且也受GOMAXPROCS的控制,一般都是很多个goroutine运行在一组线程上面。所以,如果在Go里面的话,我理解是没有线程和协程相互切换的场景,因为二者没有在一个层级上面,不是平行的关系,自然也就不会有线程和协程访问同一资源的情况了。当然这些只是我自己的理解。另外,其实goroutine和协程(coroutines)不完全是一个概念/模型,二者还是有些差别,可参考https://golang.org/doc/effective_go.html#goroutines。欢迎继续交流讨论~ kid http://niyanchun.com/gopl-notes-concurrent.html/comment-page-1#comment-224 2017-04-09T21:35:19+08:00 线程和协程只有内核态的切换吗?用户态的切换可以讲讲吗?线程和协程通信时如果访问同一资源的处理区别可以讲下吗?