使用无缓冲的 channel,使两个协程同步,按照相同的步调执行,但因为要交替打印,所以不能每次同步后都打印,要让该输出的协程输出,不该输出的协程不输出。
互斥锁是并发程序中对共享资源进行访问控制的主要手段,对此 Go 语言提供了非常简单易用的 Mutex,Mutex 是一个结构体类型,对外暴露 Lock() 和 Unlock() 两个方法分别用于加锁和解锁。
Golang 的 map 使用哈希表作为底层实现,一个哈希表里可以有多个哈希表节点,也即 bucket,而每个 bucket 就保存了 map 中的一个或一组键值对。
channel 是 Golang 在语言层面提供的 goroutine(协程)间的通信方式,比 Unix 管道更易用也更轻便。channel 主要用于进程内各 goroutine 间通信,如果需要跨进程通信,建议使用分布式系统的方法来解决。
排序应该是我们日常工作中经常使用到的算法,一般通过系统自带的 sort 库即可实现简单排序,但如果有一些定制化的需求,那么应该怎么排序呢?本文将简单阐述Go中如何自定义排序规则。
从具体需求中看Go中如何自定义排序规则。
假设我们有一堆信封[w, h],w表示信封宽度,h表示信封高度。
现在我们需要对一堆信封排序,排序规则是按宽度从小到大,如果宽度相同,则按高度从大到小排。
在业务开发中,我们经常使用定时任务去处理一些任务,比如定时更新数据等。本文将在 tRPC-Go 的定时任务教程基础上,补充说明如果有多个定时任务,如何共用一个定时策略。