go
泮小俊233
技术爱好者
展开
-
go中的sync.Map
Go 1.9中的sync.Map提供了线程安全的map,它的优点总结如下:(网上找的)1.空间换时间。 通过冗余的两个数据结构(read、dirty),实现加锁对性能的影响。2.使用只读数据(read),避免读写冲突。3.动态调整,miss次数多了之后,将dirty数据提升为read。4.double-checking。5.延迟删除。 删除一个键值只是打标记,只有在提升dirty的时候才清理删除的...原创 2018-05-18 15:38:17 · 804 阅读 · 0 评论 -
go中的sync.Mutex
golang中的互斥锁定义在src/sync/mutex.go源码中给出了互斥量公平的解释,差不多意思如下:互斥锁可以处于两种操作模式:normal和starvation。在normal模式下,新加入竞争锁队列的协程也会直接参与到锁的竞争中来,处于starvation模式下,所以新加入的协程将直接进入等待队列中挂起,直到其等待队列之前的协程全部执行完毕。normal模式下,协程的竞争等待时间如果大...原创 2018-05-20 02:04:59 · 1494 阅读 · 0 评论 -
go的rpc
我们先从服务端开始分析,先调用rpc.register方法注册暴露的服务对象。里面调用了DefaultServer的register方法func (server *Server) register(rcvr interface{}, name string, useName bool) error { s := new(service) s.typ = reflect.TypeOf(rcvr)...原创 2018-06-24 19:29:22 · 1761 阅读 · 0 评论