Thead和Groutine比较
多对多简图
多对多情况下,多个Goroutine对应同一个系统线程,相互之间的切换成本较低
Go基本调度机制
- Processor会对一点时间内完成的Goroutine数量进行计数,如果长时间没有发生改变,就会将目前正在执行的Goroutine插到队尾;
- 当某一个Goroutine被系统中断了如读写IO操作,Processor会把自己移动到另一个System Thread中继续完成其他Goroutine。并将目前运行记录下来,执行完IO之后,继续回来操作
错误使用方法
被注释掉的内容是正确的,因为在go中进行函数调用,传入的参数都是值传递,即,重新复制一份;而没有注释的代码内容,i是共享变量,需要锁来完成。