- 博客(3)
- 资源 (2)
- 收藏
- 关注
转载 Go日记——Go 1.9 sync.Map揭秘
转自https://colobu.com/2017/07/11/dive-into-sync-Map/在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个锁,封装成一个新的struct或者单独使用锁都可以。本文...
2019-01-21 17:28:42 266
转载 Go日记——morestack与goroutine pool
Go语言的goroutine初始栈大小只有2K,如果运行过程中调用链比较长,超过的这个大小的时候,栈会自动地扩张。这个时候会调用到一个函数runtime.morestack。开一个goroutine本身开销非常小,但是调用morestack进行扩栈的开销是比较大的。想想,如果函数的栈扩张了,有人引用原栈上的对象怎么办?所以morestack的时候,里面的对象都是需要调整位置的,指针都要重定位到新的...
2019-01-21 16:01:33 709
转载 Go日记——反向RPC
背景通常的RPC是基于C/S结构,RPC的服务端对应网络的服务器,RPC的客户端也对应网络客户端。但是对于一些特殊场景,比如在公司内网提供一个RPC服务,但是在外网无法链接到内网的服务器。这种时候我们可以参考类似反向代理的技术,首先从内网主动链接到外网的TCP服务器,然后基于TCP链接向外网提供RPC服务。声明接口type HelloService struct {}func (p *H...
2019-01-07 10:46:36 2521 9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人