
网络编程
phantom_111
这个作者很懒,什么都没留下…
展开
-
golang之goroutine调度的理解
系统内核已经有一个thread scheduler,为什么golang还自己实现了一套runtime scheduler。主要有两个原因,一个是,线程的很多特性(比如context上下文切换的耗时,thread自己的信号掩码等)对go程序来说是累赘。另一个原因是go的垃圾回收需要所有的goroutine停止,使得内存存在一个一致的状态。垃圾回收的时间点是不明确的,如果依靠系统自身的schedule...原创 2018-01-08 17:40:37 · 1619 阅读 · 0 评论 -
一个死锁引发的思考
笔者在转到 golang 之后使用最多的就是 Grpc 的库,这次裸写 tcp 的 client ,由于 client 的 write 阻塞间接导致了代码死锁,在此处记录下。 client write 的分类 写成功 「写成功」指的是 write 调用返回的 n 与预期要写入的数据长度相等,且 error 为 nil 。函数原型如下: func (c *TCPConn) Write(b []by...原创 2018-09-24 17:55:36 · 717 阅读 · 0 评论