初级会员
  • 第 8026 位会员
  • simple
  • 794183512@qq.com
  • 2017-04-12 01:45:34
  • Offline
  • 18 91

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 一言以蔽之,Go这门语言不适合初学者。初学者还是先去学习C++/Java/Python等等比较常规的编程语言比较好。
  • 你这个写法很有趣,要想解释清楚原因,需要对Go的runtime的抢占调度机制有个清晰的认识。 你起了当前运行时可以最大并行运行的goroutine数目,然后让main goroutine sleep之后,就是你for循环中启动的那些goroutines在实际的运行,并且占满了你的cpu core数,当你在goroutine中是一个for死循环,**没有任何函数调用**。 我们知道如果是OS线程的话,OS一般是基于时间片发起抢占调度(通过中断的方式),让运行时间太长的线程调度出cpu,以保证其他线程有机会被执行。同样的go语言的runtime调度器也支持抢占调度(将运行时间过长的goroutine调度出去,避免其一直运行),但由于是在用户态发起的抢占,并不能把当前正在运行的goroutine直接中断掉,所以go runtime调度器是通过为当前正在运行的goroutine设置一个flag标志其应该被抢占了(运行时间太长的原因),然后goroutine是在**自己有函数调用**的时候,判断一下自己的抢占flag是否被set,如果被set就主动出让CPU。 所以你的代码正好抓住了go runtime调度器的缺点,你可以在你的goroutine中的for死循环中加一个fmt.Print()试验一下。
  • 你是如何将这些数据发送给这个server的?感觉应该不是这段代码有问题,而是发送端有问题
  • #7 @qiangmzsx 中间件技术部(招聘已停止了)
  • @alex_023 除了北上广深,就该说杭州和成都了。