- 博客(4)
- 收藏
- 关注
原创 go的并发
当互斥锁释放后,等待的 goroutine 才可以获取锁进入临界区,多个 goroutine 同时等待一个锁时,唤醒的策略是随机的。这是因为我们创建的是一个无缓冲区的通道,无缓冲的通道只有在有接收方能够接收值的时候才能发送成功,否则会一直处于等待发送的阶段。互斥锁是完全互斥的,但是实际上有很多场景是读多写少的,当并发的去读取一个资源而不涉及资源修改的时候是没有必要加互斥锁的,这种场景下使用读写锁是更好的一种选择。只要通道的容量大于零,那么该通道就属于有缓冲的通道,通道的容量表示通道中最大能存放的元素数量。
2024-01-07 23:25:06
821
原创 defer
Go语言的 defer 语句会将其后面跟随的语句进行延迟处理,在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。
2024-01-07 23:15:08
336
原创 Go 语言切片(Slice)
Go除了提供其他语言中常见的数组结构外,还提供一种对数组的抽象也就是切片。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。这里 len 是数组的长度并且也是切片的初始长度。
2024-01-07 22:52:20
347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人