使用Go1.9.1 版本 实现的TCP通讯模块,发现会出现乱序情况发生(接收几千万次回发生一次),日志输出发现竟然是io.ReadFull出了问题,如果设置 runtime.GOMAXPROCS(1) 就不再出现该错误,截图如下,是系统的多线程错误吗?
![99C9CFD6-6FDF-4e1f-A37B-ED19254E5CB5.png](https://static.studygolang.com/180705/da47bbf22df178fcb5af60a660da499f.png)
代码块
![3874233D-9F14-4774-89C9-854AE0D7EAEA.png](https://static.studygolang.com/180705/3d6ae9c32e9db54a41c512aa7e573ae6.png)
看了下readfull的代码,有问题。它调用readatleast函数,但是只判断了读取的字节数是否大于等于n,并不一定等于n,所以大于时,函数一样会返回。
#6