go语言
丁玲隆咚呛
这个作者很懒,什么都没留下…
展开
-
go语言:给map上锁
map不是goroutine safe的,在多goroutine并发时需要上锁。不上锁会出现什么问题呢?资源竞争:会出现脏读,丢失更新等一系列状况。如读到的是旧数据或是读出来的对象已经被删除了,引发panic。锁用的不对会发生什么呢?第一种情况:死锁(dead lock),卡住。使用时lock了,但没有unlock,就锁死了。另外,注册copy对象里带锁时,注意是不是带锁状态一起拷贝了,...原创 2020-03-01 12:30:10 · 1885 阅读 · 0 评论 -
go语言:内嵌二义性(ambiguous selector )
内嵌两个结构体中有相同字段会发生二义性。先看代码:package mainimport "fmt"type Shape struct { id int}type Object struct { id int}type Color struct { //Object id int}type Rect struct { Shape *Color}fu...原创 2020-03-01 12:20:00 · 1341 阅读 · 0 评论 -
go语言:带缓冲和不带缓冲通道的区别
不带缓冲的通道这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能完成发送和接收操作。package mainimport ( "fmt" "time")func main() { c := make(chan int, 0) go func() { defer func() { fmt.Println("recycle")...原创 2020-03-01 12:18:45 · 409 阅读 · 0 评论